{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "Brian Khuu",
  "language": "en",
  "home_page_url": "https://briankhuu.com",
  "feed_url": "https://briankhuu.com/feed.json",
  "description": "Personal Website Of Brian Khuu",
  "author": {
    "name": "Brian Khuu",
    "url": "https://briankhuu.com"
  },
  "items": [
    {
      "id": "/blog/2026/01/02/concept-open-source-app-for-decentralised-reputation-boycott-recommendation-tracking-of-companies-and-products/",
      "url": "/blog/2026/01/02/concept-open-source-app-for-decentralised-reputation-boycott-recommendation-tracking-of-companies-and-products/",
      "title": "concept: plural, voluntary, decentralized social credit system to rank parties, companies and products",
      "content_html":"<p>Proposal for an open, decentralized social credit system for publishing and consuming reputation, boycott, and recommendation data about organizations, political groups, companies, and products.</p>\n<p>Anyone can publish a static reputation file; anyone can build a client.</p>\n<p>Users choose which sources they trust, with no central server, no mandatory account, and no enforced ideology.</p>\n<hr />\n<p>There is already boycott apps and voting recommendation website, in addition to even more centralised or state wide concept of a 'social credit system' but they are often closed source and are fixed to a specific ideology.</p>\n<p>Unlike these previous approach, this proposed system has:</p>\n<ul>\n<li>no central authority</li>\n<li>no mandatory participation</li>\n<li>no unified score</li>\n<li>no enforcement mechanism</li>\n</ul>\n<p>What we should create is a standard for interchange of reputation, so that apps or web browser extension for voting recommendations and boycotting can be done as part of a federated social credit ecosystem.</p>\n<p>If possible I would like to see an open standard defined for publishing boycott and reputation data as simple static files, and an open-source Android app or web browser extension that reads them. NGOs, researchers, unions, or individuals can host their own lists. Users choose who to trust and compare sources side-by-side.</p>\n<h2>Data format for interchange</h2>\n<p>So for this feed if I'm making a first stab, I'll like to see:</p>\n<ul>\n<li>Feed metadata (id, name, license, maintainer)</li>\n<li>Entities:\n<ul>\n<li>Products (identified by barcode)</li>\n<li>Companies (identified by name and optional IDs)</li>\n</ul>\n</li>\n<li>Reputation assertions:\n<ul>\n<li>Scope (product or company)</li>\n<li>Status or score</li>\n<li>Optional tags, reasons, and source links</li>\n</ul>\n</li>\n</ul>\n<p>Where in json it might look like:</p>\n<detail>\n<pre class=\"language-json\"><code class=\"language-json\"><span class=\"token punctuation\">{</span>\n  <span class=\"token property\">\"feed\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"example.mixed.feed\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"name\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Example Mixed Reputation Feed\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"license\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"CC-BY-4.0\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"updated_at\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2026-01-01\"</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"entities\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"entity_id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"company_example_corp\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"company\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"name\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Example Corporation\"</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"entity_id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"party_example_green\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"political_party\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"name\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Example Green Party\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"country\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"DE\"</span>\n    <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"products\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"barcode\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"4006381333931\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"name\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Example Chocolate Bar\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"entity_id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"company_example_corp\"</span>\n    <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"claims\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"entity_id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"company_example_corp\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"company\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"status\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"boycott\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"score\"</span><span class=\"token operator\">:</span> <span class=\"token number\">-80</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"reason\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Labor violations\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"source_url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://example.org/report\"</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"entity_id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"party_example_green\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"political_party\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"status\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"recommended\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"score\"</span><span class=\"token operator\">:</span> <span class=\"token number\">75</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"reason\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Strong environmental platform\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"source_url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://example.org/platform\"</span>\n    <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">]</span>\n<span class=\"token punctuation\">}</span></code></pre>\n</detail>\n<p>In recfiles it might look like below (more friendly for git diffs):</p>\n<detail>\n<pre class=\"language-recfile\"><code class=\"language-recfile\"># Feed metadata\n%rec: feed\n\nid: example.mixed.feed\nname: Example Mixed Reputation Feed\nlicense: CC-BY-4.0\nupdated_at: 2026-01-01\n\n\n# Entities\n%rec: entity\n\nentity_id: company_example_corp\ntype: company\nname: Example Corporation\n\nentity_id: party_example_green\ntype: political_party\nname: Example Green Party\ncountry: DE\n\n\n# Products\n%rec: product\n\nbarcode: 4006381333931\nname: Example Chocolate Bar\nentity_id: company_example_corp\n\n\n# Claims\n%rec: claim\n\nentity_id: company_example_corp\nstatus: boycott\nscore: -80\nreason: Labor violations\n\nentity_id: party_example_green\nstatus: recommended\nscore: 75\nreason: Environmental platform</code></pre>\n<p>Above was ran though a <code>recfix rep.recfile</code> command to double check that it is valid.</p>\n</detail>\n<p>In SQLlite maybe it will look internally like below. Where the idea is that it's a faster way to partially look up a database without having to download the whole feed (e.g. via http range select) <a href=\"https://github.com/psanford/sqlite3vfshttp\">e.g. sqlite3vfshttp</a>:</p>\n<detail>\n<pre class=\"language-sql\"><code class=\"language-sql\"><span class=\"token keyword\">CREATE</span> <span class=\"token keyword\">TABLE</span> entities <span class=\"token punctuation\">(</span>\n  entity_id <span class=\"token keyword\">TEXT</span> <span class=\"token keyword\">PRIMARY</span> <span class=\"token keyword\">KEY</span><span class=\"token punctuation\">,</span>\n  <span class=\"token keyword\">type</span> <span class=\"token keyword\">TEXT</span><span class=\"token punctuation\">,</span>\n  name <span class=\"token keyword\">TEXT</span><span class=\"token punctuation\">,</span>\n  country <span class=\"token keyword\">TEXT</span>\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">CREATE</span> <span class=\"token keyword\">TABLE</span> products <span class=\"token punctuation\">(</span>\n  barcode <span class=\"token keyword\">TEXT</span> <span class=\"token keyword\">PRIMARY</span> <span class=\"token keyword\">KEY</span><span class=\"token punctuation\">,</span>\n  name <span class=\"token keyword\">TEXT</span><span class=\"token punctuation\">,</span>\n  entity_id <span class=\"token keyword\">TEXT</span> <span class=\"token keyword\">REFERENCES</span> entities<span class=\"token punctuation\">(</span>entity_id<span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">CREATE</span> <span class=\"token keyword\">TABLE</span> claims <span class=\"token punctuation\">(</span>\n  id <span class=\"token keyword\">INTEGER</span> <span class=\"token keyword\">PRIMARY</span> <span class=\"token keyword\">KEY</span> AUTOINCREMENT<span class=\"token punctuation\">,</span>\n  entity_id <span class=\"token keyword\">TEXT</span> <span class=\"token keyword\">REFERENCES</span> entities<span class=\"token punctuation\">(</span>entity_id<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n  <span class=\"token keyword\">status</span> <span class=\"token keyword\">TEXT</span><span class=\"token punctuation\">,</span>\n  score <span class=\"token keyword\">INTEGER</span><span class=\"token punctuation\">,</span>\n  reason <span class=\"token keyword\">TEXT</span><span class=\"token punctuation\">,</span>\n  source_url <span class=\"token keyword\">TEXT</span>\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre>\n</detail>\n<p>Anyway I hope this sketch will provide enough detail for building a federated style reputation sharing mechanism of social credits.</p>\n<p>Ideally we will get to the point where even individuals can their their scoring list with other friends directly to bypass the issue of organizations getting compromised as well (e.g. legal bans on boycott or reputation scoring organisation)</p>\n<hr />\n<h2>Additional consideration 2026-01-13</h2>\n<p>Some extra considerations</p>\n<ul>\n<li>The claim section would ideally include Markdown or HTML with a paragraph or two explaining the issue, as well as hyperlinks to news articles and date of the claim.\n<ul>\n<li>If it's a full paragraph, a chatbot could read it and say for instance &quot;Markus doesn't care about this topic, so we will avoid adding this recommendation to his blacklist&quot;.</li>\n<li>There will be those skeptical of the claims and it would be responsible to provide hyperlinks and references.</li>\n<li>Date of claim will also be important as different people would also have different time horizons for when a sin can be forgiven.</li>\n</ul>\n</li>\n<li>May want to make this an extension of this standard from <a href=\"https://schema.org/docs/schemas.html\">schema org</a></li>\n<li>Instead of a seperate product feed, we may want to consider it as an entity but where it's canonical ID is the product barcode?</li>\n</ul>\n<h3>How would we avoid accidentally blacklisting an entitity?</h3>\n<p>We would include trusted entities as well which has no positive/negative claims against it, which would help disambiguate potential website or products.</p>\n<h3>How to find the canonical ID of an entity?</h3>\n<p>We got an entity ID, but how do we canonically identify them in a global manner? It's possible for multiple people to identify the same organisation/company/etc... entity ID is essentially just a local key.</p>\n<p>This identifier would also be useful in example of a browser extension which may use &quot;domain&quot; id to detect that &quot;example.com&quot; url is associated with this entry.</p>\n<pre class=\"language-json\"><code class=\"language-json\"><span class=\"token property\">\"entities\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n  <span class=\"token punctuation\">{</span>\n    <span class=\"token property\">\"identity\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n      <span class=\"token punctuation\">{</span>\n        <span class=\"token property\">\"scheme\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"lei\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"549300JGZ5X0Y1Q1JX75\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"confidence\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1.0</span>\n      <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n      <span class=\"token punctuation\">{</span>\n        <span class=\"token property\">\"scheme\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"company_number\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"country\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"SE\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"556703-7485\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"confidence\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0.95</span>\n      <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n      <span class=\"token punctuation\">{</span>\n        <span class=\"token property\">\"scheme\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"wikidata\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Q306656\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"confidence\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0.7</span>\n      <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n      <span class=\"token punctuation\">{</span>\n        <span class=\"token property\">\"scheme\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"domain\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"example.com\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"confidence\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0.6</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"evidence\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n          <span class=\"token string\">\"https://example.com/legal\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token string\">\"https://whois.example.com\"</span>\n        <span class=\"token punctuation\">]</span>\n      <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"entity_id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"company_example_corp\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"company\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"name\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Example Corporation\"</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">]</span></code></pre>\n<p>Note that it is an array so that we can assign levels of priority when matching IDs.</p>\n<p>One person also recommended that the standard should also encode a URI for the schema being used to define the canonicity of the entity as it would be a big concern to have misidentified entities. Unsure how that can be done, but I presume that would be via putting a correctly formatted <a href=\"https://en.wikipedia.org/wiki/Uniform_Resource_Identifier\">URI</a> into the &quot;scheme&quot; field.</p>\n<h3>How would we rank feeds from most trusted to least trusted?</h3>\n<p>This should be decided by the user's software on their end.</p>\n<pre class=\"language-json\"><code class=\"language-json\"><span class=\"token property\">\"trusted_feeds\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n  <span class=\"token punctuation\">{</span> <span class=\"token property\">\"feed_id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"labor.union.se\"</span><span class=\"token punctuation\">,</span> <span class=\"token property\">\"weight\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1.0</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n  <span class=\"token punctuation\">{</span> <span class=\"token property\">\"feed_id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"random.github.user\"</span><span class=\"token punctuation\">,</span> <span class=\"token property\">\"weight\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0.3</span> <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">]</span></code></pre>\n<h3>Time horizon for forgiveness</h3>\n<pre class=\"language-json\"><code class=\"language-json\"><span class=\"token property\">\"effective_from\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2024-01-01\"</span><span class=\"token punctuation\">,</span>\n<span class=\"token property\">\"review_after\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2026-01-01\"</span><span class=\"token punctuation\">,</span>\n<span class=\"token property\">\"last_reviewed\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2025-06-01\"</span></code></pre>\n<p>Using these timestamps clients on their side can:</p>\n<ul>\n<li>Fade out old claims</li>\n<li>Prompt users to re-evaluate</li>\n<li>Let users say “I don’t care about this issue”</li>\n</ul>\n<h3>How to discover other feeds?</h3>\n<p>This is similar to <a href=\"https://en.wikipedia.org/wiki/OPML\">OPML</a> which is a list of feed of other feeds, but for our use case of a distributed federated trust system rather than federated news feeds.</p>\n<pre class=\"language-json\"><code class=\"language-json\"><span class=\"token punctuation\">{</span>\n  <span class=\"token property\">\"feed\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"example.feed_index.labor\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"feed_index\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"maintainer\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Example Labor NGO\"</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"feeds\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"feed_id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"labor.eu.textiles\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://example.org/textiles.json\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"topics\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"labor\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"manufacturing\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"trust_hint\"</span><span class=\"token operator\">:</span> <span class=\"token number\">0.9</span>\n    <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">]</span>\n<span class=\"token punctuation\">}</span></code></pre>\n<p>This will be useful for clients to interchange feeds when moving between devices... or for feeds to share other feeds.</p>\n",
      "date_published": "2026-01-02T00:00:00Z"
    },
    {
      "id": "/blog/2026/01/02/concept-mdns-local-search-engine/",
      "url": "/blog/2026/01/02/concept-mdns-local-search-engine/",
      "title": "concept: mdns local search engine",
      "content_html":"<p>What if we can add additional metadata and records into mdns standard to make it easier to have a local 'webapp' or search engine.</p>\n<hr />\n<p>This is an open idea, so feel free to develop it.</p>\n<p>I would like mdns to have the capability for me to create a local web search engine that can do two things targeted for human use:</p>\n<ul>\n<li>\n<p>Directory listing of all <code>*.local</code> web server</p>\n</li>\n<li>\n<p>Search capability of searching individual local web servers</p>\n</li>\n</ul>\n<p>What I'm envisioning is that we have two different standards here. So let's split this idea into two parts:</p>\n<h2>MDNS Human Readable Local Web Server Listings:</h2>\n<p>If you use</p>\n<pre><code>avahi-browse -a -r\n</code></pre>\n<p>You might see something like</p>\n<pre><code>+ en0 IPv4 MyPrinter _ipp._tcp local\n= en0 IPv4 MyPrinter _ipp._tcp local\n   hostname = [myprinter.local]\n   address = [192.168.1.45]\n   port = 631\n   txt = [&quot;note=Office Printer&quot;]\n+ en0 IPv4 MyNAS _smb._tcp local\n= en0 IPv4 MyNAS _smb._tcp local\n   hostname = [mynas.local]\n   address = [192.168.1.50]\n   port = 445\n   txt = [&quot;workgroup=WORKGROUP&quot;]\n</code></pre>\n<p>Often you can jst type <code>myprinter.local</code> and it brings up the printer local web server interface.</p>\n<p>But it really doesn't tell you much about it or why you may want to care about it (e.g. kitchen inventory web server).</p>\n<p>I'm proposing that we add more record type to allow for encoding these extra information useful for a human rather than machine focused search engine. If we look at what mdns records may look like right now, see below:</p>\n<pre><code>= enp6s0 IPv6 Chromecast-lnHsPEJoDHHfvKbdGTa3BUFcp3mhZA3   _googlecast._tcp     local\n   hostname = [f81d4fae-7dec-11d0-a765-00a0c91e6bf6.local]\n   address = [8856:2245:4553:8:43:3343:3334:2222]\n   port = [8009]\n   txt = [&quot;rs=Youtube&quot; &quot;rr=lnHsPEJoD&quot; &quot;ct=lnHwedf&quot; &quot;nf=1&quot; &quot;bs=lnHsPEJoD&quot; &quot;st=1&quot; &quot;ca=lnHs&quot; &quot;fn=Living Room TV&quot; &quot;ic=/setup/icon.png&quot; &quot;md=Chromecast&quot; &quot;ve=05&quot; &quot;rm=lnHsPEJoDHHf&quot; &quot;cd=lnHsPEJoDHH\n</code></pre>\n<p>Right now txt records are full of machine focused information... that doesn't really tell you much about it from a human perspective of where to find the 'web site' or a 'thumbnail' or 'visual logo' etc... (or if it's a light bulb... the simple commands you can trigger from a human perspective on it).</p>\n<p>We could try cramming more keywords into txt, but it's a bit packed and I would worry about smashing into something important. So maybe let's add new record type like <code>hrd</code>, <code>icon</code>, <code>tags</code> or something (details can be fleshed out with a proper working group). Assuming we go with those, maybe we see something like:</p>\n<ul>\n<li>txt : still holds machine-readable info (version, author).</li>\n<li>hrd : human-readable description for discovery interfaces.</li>\n<li>icon : URL to app/service icon.</li>\n<li>tags : hashtags for filtering/discovery.</li>\n<li>url : full web app link.</li>\n<li>mini_card : optional tiny interactive html iframe for simple controls (lights, speaker volume, toggles).</li>\n</ul>\n<pre><code>+ en0 IPv4 WebAppX _http._tcp local\n= en0 IPv4 WebAppX _http._tcp local\n   hostname = [webappx.local]\n   address = [192.168.1.101]\n   port = 8080\n   txt = [&quot;version=1.4.2&quot;, &quot;author=SmartTech Inc.&quot;]\n   hrd = [&quot;Interactive dashboard for IoT devices, shows live sensor data, supports remote control&quot;]\n   icon = [&quot;https://webappx.local/icon.png&quot;]\n   tags = [&quot;#IoT&quot;, &quot;#Dashboard&quot;, &quot;#SmartHome&quot;]\n\n+ en0 IPv4 MusicPlayer _http._tcp local\n= en0 IPv4 MusicPlayer _http._tcp local\n   hostname = [musicplayer.local]\n   address = [192.168.1.102]\n   port = 3000\n   txt = [&quot;version=2.0.1&quot;, &quot;author=AudioLabs&quot;]\n   hrd = [&quot;Stream and manage your music library from any device, create playlists, and share&quot;]\n   icon = [&quot;https://musicplayer.local/logo.svg&quot;]\n   tags = [&quot;#Music&quot;, &quot;#Streaming&quot;, &quot;#App&quot;]\n\n+ en0 IPv4 SmartLight _http._tcp local\n= en0 IPv4 SmartLight _http._tcp local\n   hostname = [smartlight.local]\n   address = [192.168.1.103]\n   port = 5000\n   txt = [&quot;version=0.9.8-beta&quot;, &quot;author=BrightTech&quot;]\n   hrd = [&quot;Control lighting with schedules and moods, supports voice commands&quot;]\n   icon = [&quot;https://smartlight.local/light_icon.png&quot;]\n   tags = [&quot;#SmartHome&quot;, &quot;#Lighting&quot;, &quot;#IoT&quot;]\n   mini_card = [&quot;https://smartlight.local/card.html&quot;]\n   url = [&quot;https://smartlight.local/&quot;]\n</code></pre>\n<p>For a random vibe based render of this concept, below is a chatgpt rendered image of what the user may see:</p>\n<p><img src=\"./human-focused-mdns-browser-concept.png\" alt=\"\" /></p>\n<h2>Local Web Search:</h2>\n<p>With this local web search system... either we figure out a custom approach where we broadcast a search string and have web servers reply with possible search entries.</p>\n<p>Or we can enhance mdns records with a recommended 'search api' location. E.g.</p>\n<pre><code>+ en0 IPv4 WebAppX _http._tcp local\n= en0 IPv4 WebAppX _http._tcp local\n   hostname = [webappx.local]\n   address = [192.168.1.101]\n   port = 8080\n   txt = [&quot;version=1.4.2&quot;, &quot;author=SmartTech Inc.&quot;]\n   hrd = [&quot;Interactive dashboard for IoT devices, shows live sensor data, supports remote control&quot;]\n   icon = [&quot;https://webappx.local/icon.png&quot;]\n   tags = [&quot;#IoT&quot;, &quot;#Dashboard&quot;, &quot;#SmartHome&quot;]\n   search = [webappx.local?q=&lt;SEARCH_TERM_HERE&gt;]\n</code></pre>\n<p>Where it will discover search point of various webservers... and if the human request something it will ping each endpoint like <code>webappx.local?q=&lt;SEARCH_TERM_HERE&gt;</code> and receive a json/xml/whatever record of various search stuff the user may have wanted.</p>\n<p>Not sure how one would deal with security here... as you may not want a NAS to tell on all the possible files you got, but again that's just implementation detail if this idea is explored further. Hopefully the point is taken across.</p>\n",
      "date_published": "2026-01-02T00:00:00Z"
    },
    {
      "id": "/blog/2025/11/29/bash-script-for-testing-a-syn6988-voice-synth-module/",
      "url": "/blog/2025/11/29/bash-script-for-testing-a-syn6988-voice-synth-module/",
      "title": "Bash script for testing a syn6988 voice synth module",
      "content_html":"<p>Got a device that can do voice synth and is controlled over serial. Would like to have a simple bash script to at least test that it's working.</p>\n<hr />\n<p>It's a SYN6988 and has some pretty decent voice synth capability for being an embedded module.</p>\n<p>Learned the basic on controlling it via reading the source of this <a href=\"https://hackaday.io/project/190732-pill-dispenser-robot\">pill dispenser robot</a> and created a bash script so I can quickly check if my module is working. Below script is confirmed to be working, but happy to hear other suggestions to make this test script more useful.</p>\n<p>Just make sure to remember to flip the correct dip switches to set the correct baud rate.</p>\n<p>Also note that the output sound will be quite soft, you will need to amplify it to get useful signal out of it.</p>\n<pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token shebang important\">#!/bin/bash</span>\n\n<span class=\"token comment\"># SYN6988 basic test script</span>\n<span class=\"token comment\"># This will simply send a small set of commands to check that speech synth is working as well as demo various soundbank sounds within it</span>\n\n<span class=\"token comment\"># Adjust this to match the serial port you connected the syn6988 to</span>\n<span class=\"token assign-left variable\">PORT</span><span class=\"token operator\">=</span><span class=\"token string\">\"/dev/ttyUSB0\"</span>\n\nstty <span class=\"token parameter variable\">-F</span> <span class=\"token string\">\"<span class=\"token variable\">$PORT</span>\"</span> <span class=\"token number\">9600</span> cs8 <span class=\"token parameter variable\">-cstopb</span> <span class=\"token parameter variable\">-parenb</span> <span class=\"token parameter variable\">-ixon</span> <span class=\"token parameter variable\">-ixoff</span>\nhttps://www.lcsc.com/product-detail/C2858033.html\n<span class=\"token function-name function\">speak</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token builtin class-name\">local</span> <span class=\"token assign-left variable\">msg</span><span class=\"token operator\">=</span><span class=\"token string\">\"<span class=\"token variable\">$1</span>\"</span>\n\n    <span class=\"token comment\"># Calculate packet length = 2 + strlen(msg)</span>\n    <span class=\"token builtin class-name\">local</span> <span class=\"token assign-left variable\">len</span><span class=\"token operator\">=</span><span class=\"token variable\"><span class=\"token variable\">$((</span><span class=\"token number\">2</span> <span class=\"token operator\">+</span> ${#msg}<span class=\"token variable\">))</span></span>\n    <span class=\"token builtin class-name\">local</span> len_hex\n    <span class=\"token builtin class-name\">printf</span> <span class=\"token parameter variable\">-v</span> len_hex <span class=\"token string\">'\\\\x%02X'</span> <span class=\"token string\">\"<span class=\"token variable\">$len</span>\"</span>\n\n    <span class=\"token comment\"># Build &amp; send packet</span>\n    <span class=\"token builtin class-name\">printf</span> <span class=\"token string\">\"<span class=\"token entity\" title=\"\\xFD\">\\xFD</span><span class=\"token entity\" title=\"\\x00\">\\x00</span><span class=\"token variable\">${len_hex}</span><span class=\"token entity\" title=\"\\x01\">\\x01</span><span class=\"token entity\" title=\"\\x00\">\\x00</span>%s\"</span> <span class=\"token string\">\"<span class=\"token variable\">$msg</span>\"</span> <span class=\"token operator\">></span> <span class=\"token string\">\"<span class=\"token variable\">$PORT</span>\"</span>\n    <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Sent: <span class=\"token entity\" title=\"\\&quot;\">\\\"</span><span class=\"token variable\">$msg</span><span class=\"token entity\" title=\"\\&quot;\">\\\"</span> (len=<span class=\"token variable\">$len</span>)\"</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token function-name function\">play_sound_prompt_range</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token builtin class-name\">local</span> <span class=\"token assign-left variable\">start</span><span class=\"token operator\">=</span><span class=\"token variable\">$1</span>\n    <span class=\"token builtin class-name\">local</span> <span class=\"token assign-left variable\">end</span><span class=\"token operator\">=</span><span class=\"token variable\">$2</span>\n\n    <span class=\"token keyword\">for</span> <span class=\"token variable\"><span class=\"token punctuation\">((</span>i<span class=\"token operator\">=</span>start<span class=\"token punctuation\">;</span> i<span class=\"token operator\">&lt;=</span>end<span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">))</span></span><span class=\"token punctuation\">;</span> <span class=\"token keyword\">do</span>\n        <span class=\"token builtin class-name\">printf</span> <span class=\"token parameter variable\">-v</span> padded <span class=\"token string\">\"%03d\"</span> <span class=\"token string\">\"<span class=\"token variable\">$i</span>\"</span>\n        speak <span class=\"token string\">\"[x1]sound<span class=\"token variable\">${padded}</span>\"</span>\n        <span class=\"token function\">sleep</span> <span class=\"token number\">1</span>\n    <span class=\"token keyword\">done</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"=== Sending test speech commands ===\"</span>\n\nspeak <span class=\"token string\">\"[x0][t6][v5][s6][m51][g2][h2][n1] Hello World\"</span>\n<span class=\"token function\">sleep</span> <span class=\"token number\">3</span>\n\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"=== Sending test sound prompt commands ===\"</span>\n<span class=\"token comment\"># Ref: In Datasheet SYN6988-translated.pdf</span>\n<span class=\"token comment\">#      Refer to section 12.3.1 Sound Prompt List</span>\n\nspeak <span class=\"token string\">\"Now playing sound prompt beep type\"</span>\n<span class=\"token function\">sleep</span> <span class=\"token number\">3</span>\n\nplay_sound_prompt_range <span class=\"token number\">101</span> <span class=\"token number\">124</span>\n\nspeak <span class=\"token string\">\"Now playing sound prompt ringtone type\"</span>\n<span class=\"token function\">sleep</span> <span class=\"token number\">3</span>\n\nplay_sound_prompt_range <span class=\"token number\">201</span> <span class=\"token number\">209</span>\n\nspeak <span class=\"token string\">\"Now playing sound prompt alert type\"</span>\n<span class=\"token function\">sleep</span> <span class=\"token number\">3</span>\n\nplay_sound_prompt_range <span class=\"token number\">301</span> <span class=\"token number\">314</span>\n\nspeak <span class=\"token string\">\"Now playing sound prompt credit card success type\"</span>\n<span class=\"token function\">sleep</span> <span class=\"token number\">3</span>\n\nplay_sound_prompt_range <span class=\"token number\">401</span> <span class=\"token number\">408</span>\n\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"=== Done ===\"</span></code></pre>\n<p>You can get it from <a href=\"https://www.lcsc.com/product-detail/C2858033.html\">LCSC</a> but as of 2026-01-02 it's out of stock.</p>\n<p>For my test rig I was using:</p>\n<ul>\n<li>Serial To USB TTL with 3.3v power output</li>\n<li>SYN6988 Speech Synth Module\n<ul>\n<li><img src=\"./SYN6988-Speech-Synth-Module.trimmed.jpg\" alt=\"SYN6988 Speech Synth Module\" /></li>\n<li>Dip Switch Set To: On, Off, Off, On for 9600 Baud</li>\n<li>42mm by 38mm</li>\n<li>\n<table>\n<thead>\n<tr>\n<th>Left Header Row</th>\n<th>Right Header Row</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>GND</td>\n<td>VCC</td>\n</tr>\n<tr>\n<td>GND</td>\n<td>AO_P : Audio +</td>\n</tr>\n<tr>\n<td>GND</td>\n<td>AO_N : Audio -</td>\n</tr>\n<tr>\n<td>R / B</td>\n<td>RXD</td>\n</tr>\n<tr>\n<td>RST</td>\n<td>TXD</td>\n</tr>\n<tr>\n<td>NC</td>\n<td>NC</td>\n</tr>\n<tr>\n<td>SCK</td>\n<td>SSEL</td>\n</tr>\n<tr>\n<td>MISO</td>\n<td>MOSI</td>\n</tr>\n</tbody>\n</table>\n</li>\n<li>VCC is powered with 3.3v</li>\n</ul>\n</li>\n<li>PAM8403 Stereo Audio Amplifier Module\n<ul>\n<li><img src=\"./PAM8403-Audio-Amplifier-Module.trimmed.jpg\" alt=\"PAM8403 Stereo Audio Amplifier Module\" /></li>\n<li>SYN6988 output is rather soft... maybe it's a line level output? So hence we need an audio amplifier</li>\n<li>This module is marked as 5v in silkscreen, but can accept from 2.5v to 5.5v. Since SYN6988 is 3.3v powered, that's what I powered the speaker module for convenience. It's likely going to be softer... but in practice it's loud enough for local notification. (e.g. short range desk speaker)</li>\n<li><a href=\"https://www.mouser.com/datasheet/2/115/PAM8403-247318.pdf\">Datasheet for PAM8403 FILTERLESS 3W CLASS-D STEREO AUDIO AMPLIFIER</a></li>\n</ul>\n</li>\n<li>Speaker\n<ul>\n<li>Any small decent sized speaker will do. Too small and it will sounds very hard to hear due to distortion.</li>\n</ul>\n</li>\n</ul>\n<pre><code>USB --- [USB to Serial] --- [SYN6988] --- [PAM8403] --- (Speaker)\n</code></pre>\n<h2>Future ideas</h2>\n<p>I got a meshtastic device and my understanding is you can get it to output a serial data of chat log in the form of:</p>\n<pre><code>&lt;nick0&gt;: &lt;chat message 0&gt;\n&lt;nick1&gt;: &lt;chat message 1&gt;\n&lt;nick2&gt;: &lt;chat message 2&gt;\n</code></pre>\n<p><a href=\"https://meshtastic.org/docs/configuration/module/serial/\">Documentation about the Serial Module in meshtastic</a></p>\n<p>Just to make sure... I ran the below bash command</p>\n<pre><code>speak &quot;nick: Hello World&quot;\n</code></pre>\n<p>And found that it spoke <code>nick &lt;pause&gt; hello world</code> and didn't really need these <code>[x0][t6][v5][s6][m51][g2][h2][n1]</code> to start speaking.</p>\n<p>This is very convenient... as I can now just plug it to the meshtastic stream output to a microcontroller acting as a glue and have it speak without needing to modify the meshtastic firmware.</p>\n<p>Alternatively I can modify the meshtastic firmware to speak it directly and keep parts count lower.</p>\n<h2>Extra Readings</h2>\n<p>Found out later this <a href=\"https://github.com/jscrane/TTS\">github project TTS</a> by jscrane that is practically the same but on as a semi-portable text to speech library. This does look a bit chunky enough that it won't fit into the meshtastic firmware project... but it's small enough that this can sustainability be ported to various microcontrollers as a stand alone text to speech module. Which is good as the SYN6988 looks to be no longer manufactured so it will become out of stock.</p>\n<p>Do follow his project <a href=\"https://programmablehardware.blogspot.com/search/label/tts\">in his blog</a> as he also appeared to have ported it to ESP8266 as well!</p>\n",
      "date_published": "2025-11-29T00:00:00Z"
    },
    {
      "id": "/blog/2025/10/07/screw-back-plane-openscad/",
      "url": "/blog/2025/10/07/screw-back-plane-openscad/",
      "title": "Screw Back Plane OpenSCAD",
      "content_html":"<p>This allows for creating custom screw backplane that you often find in junction boxes etc... and also was researching on typical size and spacing for future custom PCB projects.</p>\n<img src=\"data:image/webp;base64,UklGRqIDAABXRUJQVlA4IJYDAABQFgCdASpPAEMAP2mexlmzqyejr1VcSnAtCWQA0Uu2PwhrrLfZdX+Frj2gDpd3bsr4xuR/v0xA01QNMUEC+vg+6P4vds2f+zmf1/BwBB5A53iept9GA0m5g79yUiI93JaRZgb7S5HU2kX3bwi/vVfaw2mk73ko0Wis5PqSoMdeB1M4wh31KoncnaXq75w1ObHR5PumWlucnGeApXXBWxNsCoyvWhRPb6XpbKMZsG0dribdzx7ENznugeUwAP2002J0+/22T4gfUmKAcf3XiGnh8P5bXTYMQBKmi+vEbjrhXQMikdDReo69a3BwqDO1nc4CVlhWHkoKlZmLxWguLP+e1jyqQjT146J/bTzwpvT/2A5JKh3bcGl6rM4J+ODY+U0qqd3Ch10kG0ByPbd5BZqC+D0GwEssJlSV2KTPrDrQuKIj35I5KS8+6vcaN985VABKyaF8wsYnETR9MEaXK9fDYKlgB0hSRaDox+VHC1R2RWJnEjqXDSQZWmB1MduRnPcX/8qKgBGEFx/zOfWi5KzIK4+Vu5MzWwEkMnQkYOatZdenSzbnVZO5xUWaI7TYNxzsKjXDDiM8niKS3u7P9caM0BHMA5lfJiiisQmd7gzAIPOhHgbX4jEoUcheCot5yihYjhY70CQO3a79qwPKk6VxRNA8Z3BUNIwFYIgvnuRHhGMccq2p3CCRcXUJLGJiVH1POEx/sYPY0Ge8ZywZTmrInrwkKFeEEyeMyOLXzEhUwrRFdPUWaaiqSQE0M/FUmnj+X4xLRUqURFFCVqDo9UTwIR+OEYwGmUn+I2e+iUPlIquiVOpRXxzrS6lYzZCQxHel8QKGCwwC3y2hnLZP2GrVpLDayxKKRLFqJpntisI6kdYi9AHxV3deLrBPRkR6Zondf23/8rBlYRIaX3OS93K8o99DSjy7Vp9DQ+7CdHve/6vXt55FCK6ze3z06oODxQ2Ffu8UYc9wmiKfC957JHySFJX90MBR2q01LKsqerqu2io2mEuT6FPZfqMXDiO4Pm/4n2jisvXHxLQPBUsm0/tbTLV+EdXcwh4LhuOYXkpiWuCDHxTg5OMSDQf2t+pZp3Dw4UKTsfGaHIYppjmtLPgiB8Zly++tgsaEiuEvp9cGn5QCdpScDdXIDYbI4GUJx7RoG8KxPcP+/Pc6shvnqXvUioc8FxVej2Bz2FdJlSY8mDQ66lRhb6kw5KOktfVLyE4lJXIAAAA=\" width=\"274\" height=\"232\" />\n<hr />\n<p>Based on <a href=\"https://www.aliexpress.com/item/1005009909495336.html\">https://www.aliexpress.com/item/1005009909495336.html</a>, i manually measured the screw size and spacing for future custom PCB designs. Basically you want to stick to these spec:</p>\n<ul>\n<li>M2 screws (2mm holes)\n<ul>\n<li>Noticed that M2.5 also works with these holes as well. (These are the same screws used in raspberry pi etc...)</li>\n</ul>\n</li>\n<li>5mm pitch between holes</li>\n</ul>\n<p>To make your life easier, here is a openscad library that let's you generate a panel with the corresponding holes.</p>\n<pre class=\"language-c\"><code class=\"language-c\"><span class=\"token comment\">// Screw Back Plane</span>\n<span class=\"token comment\">// Brian Khuu 2025</span>\n<span class=\"token comment\">// This allows for creating custom screw backplane that you often find in junction boxes etc...</span>\n<span class=\"token comment\">// Found out that these junction boxes typically have screw size of M2 and screw pitch of 5mm</span>\n<span class=\"token comment\">// At least based on https://www.aliexpress.com/item/1005009909495336.html</span>\n\nmodule <span class=\"token function\">screwBackPlaneHoles</span><span class=\"token punctuation\">(</span>width<span class=\"token punctuation\">,</span> length<span class=\"token punctuation\">,</span> thickness<span class=\"token operator\">=</span><span class=\"token number\">3</span><span class=\"token punctuation\">,</span> pitch<span class=\"token operator\">=</span><span class=\"token number\">5</span><span class=\"token punctuation\">,</span> screwSize<span class=\"token operator\">=</span><span class=\"token number\">2</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span>\n    xCount <span class=\"token operator\">=</span> <span class=\"token function\">floor</span><span class=\"token punctuation\">(</span>width<span class=\"token operator\">/</span>pitch<span class=\"token punctuation\">)</span><span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    yCount <span class=\"token operator\">=</span> <span class=\"token function\">floor</span><span class=\"token punctuation\">(</span>length<span class=\"token operator\">/</span>pitch<span class=\"token punctuation\">)</span><span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    xCalcWidth <span class=\"token operator\">=</span> xCount  <span class=\"token operator\">*</span> pitch <span class=\"token operator\">+</span> pitch<span class=\"token operator\">/</span><span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n    yCalcWidth <span class=\"token operator\">=</span> yCount <span class=\"token operator\">*</span> pitch <span class=\"token operator\">+</span> pitch<span class=\"token operator\">/</span><span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">translate</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span><span class=\"token operator\">-</span>xCalcWidth<span class=\"token operator\">/</span><span class=\"token number\">2</span><span class=\"token punctuation\">,</span><span class=\"token operator\">-</span>yCalcWidth<span class=\"token operator\">/</span><span class=\"token number\">2</span><span class=\"token punctuation\">,</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n    <span class=\"token function\">translate</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span>screwSize<span class=\"token operator\">/</span><span class=\"token number\">2</span><span class=\"token punctuation\">,</span>screwSize<span class=\"token operator\">/</span><span class=\"token number\">2</span><span class=\"token punctuation\">,</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span>xoffset <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token operator\">:</span><span class=\"token number\">1</span><span class=\"token operator\">:</span>xCount<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n        <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span>yoffset <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token operator\">:</span><span class=\"token number\">1</span><span class=\"token operator\">:</span>yCount<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n            <span class=\"token function\">translate</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span>xoffset<span class=\"token operator\">*</span><span class=\"token number\">5</span><span class=\"token punctuation\">,</span>yoffset<span class=\"token operator\">*</span><span class=\"token number\">5</span><span class=\"token punctuation\">,</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n                <span class=\"token function\">render</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n                <span class=\"token punctuation\">{</span>\n                    <span class=\"token function\">translate</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span>thickness<span class=\"token operator\">+</span><span class=\"token number\">0.5</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span> \n                        <span class=\"token function\">cube</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span>screwSize<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span>screwSize<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> center <span class=\"token operator\">=</span> true<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token function\">hull</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n                    <span class=\"token punctuation\">{</span>\n                        <span class=\"token function\">translate</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span>thickness<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span> \n                            <span class=\"token function\">cube</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span>screwSize<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span>screwSize<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span><span class=\"token number\">0.01</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> center <span class=\"token operator\">=</span> true<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                        <span class=\"token function\">translate</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span> \n                            <span class=\"token function\">cube</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span>screwSize<span class=\"token punctuation\">,</span>screwSize<span class=\"token punctuation\">,</span><span class=\"token number\">0.01</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> center <span class=\"token operator\">=</span> true<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token punctuation\">}</span>\n                    <span class=\"token function\">translate</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span><span class=\"token operator\">-</span><span class=\"token number\">0.5</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span> \n                        <span class=\"token function\">cube</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span>screwSize<span class=\"token punctuation\">,</span>screwSize<span class=\"token punctuation\">,</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> center <span class=\"token operator\">=</span> true<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span> \n<span class=\"token punctuation\">}</span>\n\nmodule <span class=\"token function\">screwBackPlane</span><span class=\"token punctuation\">(</span>width<span class=\"token operator\">=</span><span class=\"token number\">67</span><span class=\"token punctuation\">,</span> length<span class=\"token operator\">=</span><span class=\"token number\">117</span><span class=\"token punctuation\">,</span> pitch<span class=\"token operator\">=</span><span class=\"token number\">5</span><span class=\"token punctuation\">,</span> screwSize<span class=\"token operator\">=</span><span class=\"token number\">2</span><span class=\"token punctuation\">,</span> thickness<span class=\"token operator\">=</span><span class=\"token number\">3</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span>\n    <span class=\"token function\">difference</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        <span class=\"token function\">translate</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span>thickness<span class=\"token operator\">/</span><span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span> \n            <span class=\"token function\">cube</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span>width<span class=\"token punctuation\">,</span> length<span class=\"token punctuation\">,</span> thickness<span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> center<span class=\"token operator\">=</span>true<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token function\">screwBackPlaneHoles</span><span class=\"token punctuation\">(</span>width<span class=\"token operator\">=</span>width<span class=\"token punctuation\">,</span> length<span class=\"token operator\">=</span>length<span class=\"token punctuation\">,</span> thickness<span class=\"token operator\">=</span>thickness<span class=\"token punctuation\">,</span> pitch<span class=\"token operator\">=</span>pitch<span class=\"token punctuation\">,</span> screwSize<span class=\"token operator\">=</span>screwSize<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token function\">screwBackPlane</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre>\n<p>Also published this to <a href=\"https://www.thingiverse.com/thing:7165838\">https://www.thingiverse.com/thing:7165838</a></p>\n",
      "date_published": "2025-10-07T00:00:00Z"
    },
    {
      "id": "/blog/2025/09/28/keepteen-d5-solar-lora-dual-heltec-v3-experimentation/",
      "url": "/blog/2025/09/28/keepteen-d5-solar-lora-dual-heltec-v3-experimentation/",
      "title": "KEEPTEEN D5 Solar Lora Dual Heltec v3 Experimentation",
      "content_html":"<p>Just modified a KEEPTEEN D5 Solar Lora station so that it can hold two radios to run both Meshtastic and Meshcore at the same time.</p>\n<hr />\n<img src=\"dual_heltec_lora32.jpg\" width=\"400\" />\n<p>Main insight here is:</p>\n<ul>\n<li>Use Heltec T114 over Heltec LoRa v3. This is because Heltec LoRa32 v3 is way too hungry and will drain a single battery overnight. With two Heltec LoRa32 v3 it will drain even faster. This is too much for the solar panel and the three lipo cells to handle. Switching to Heltec T114 means that the 3 cells will be able to handle both with no issues even on cloudier days.</li>\n<li>According to discord peeps on Meshtastic and Meshcore discord, you do not want antennas to be parallel with each other. Instead the solution is to point one antenna upwards and the other antenna downwards.</li>\n<li>You obviously need a new 3d printed tray to hold the two radios in position so that it wont shake around.</li>\n<li>If you buy T114, you will want to buy specifically the version without screen, as that model will have a shielding can which would reduce possible signal interferences. This will improve signal integrity. But lacking screens, you will need to configure it via USB or set bluetooth to fixed pin.</li>\n</ul>\n<p>Below are the screenshot of the D5 with dual Heltec LoRa32 v3 (Loaded with meshtastic and meshcore firmware), which showed that it's draining too fast:</p>\n<img src=\"Dual-Hetec-LoRa32-v3-Graph.jpg\" width=\"200\" />\n<p>Compare this with dual T114 radios (Loaded with meshtastic and meshcore firmware), showing that the current draw is smaller this time:</p>\n<img src=\"Dual-T114s-Graph.jpg\" width=\"200\" />\n<p>This image is of the two T114 radio placed into the D5 solar station:</p>\n<img src=\"dual_t114.jpg\" width=\"200\" />\n<p>Below is the two tray holding Dual Lora32 and Dual T114</p>\n<img src=\"heltec_lora32_tray.jpg\" width=\"200\" />\n<img src=\"t114_tray.jpg\" width=\"200\" />\n<ul>\n<li><a href=\"https://www.printables.com/model/1427053-keepteen-d5-lora-solar-dual-tray-sled\">KEEPTEEN D5 Solar Lora Dual Radio Tray (printable)</a></li>\n<li><a href=\"https://www.thingiverse.com/thing:7156798\">KEEPTEEN D5 Solar Lora Dual Radio Tray (thingiverse)</a></li>\n</ul>\n<p>Just discovered also that <a href=\"https://github.com/gargomoma/fakeTec_pcb\">https://github.com/gargomoma/fakeTec_pcb</a> after creating this and it looks like a good candidate for keeping cost low if you are willing to DIY. This is because the D5 Solar Enclosure already has it's own charger circuitry so the T114 and LoRa32 v3 is a bit overkill with the support for oled screen (skippable here) and solar charger (not really needed here as well). As long as you are up for soldering it yourself of course!</p>\n",
      "date_published": "2025-09-28T00:00:00Z"
    },
    {
      "id": "/blog/2025/08/03/reversed-engineered-handle-switch-pcb-for-electrolux-ergorapido-zb3012-and-zb3004/",
      "url": "/blog/2025/08/03/reversed-engineered-handle-switch-pcb-for-electrolux-ergorapido-zb3012-and-zb3004/",
      "title": "Reversed Engineered Handle Switch PCB For Electrolux ErgoRapido ZB3012 and ZB3004",
      "content_html":"<p>Was trying to figure out why a Vacuum called Electrolux ErgoRapido ZB3012 is not working.\nFound that there is a likely issue with the button controls and found that there is some replacement board in:</p>\n<ul>\n<li>Electrolux ErgoRapido ZB3004 Handle Switch PCB : <a href=\"https://allfixelectrical.com.au/products/electrolux-ergorapido-zb3004-handle-switch-pcb-part-938063010\">https://allfixelectrical.com.au/products/electrolux-ergorapido-zb3004-handle-switch-pcb-part-938063010</a></li>\n<li>Electrolux ErgoRapido ZB3010, ZB3012, ZB3013 Handle Switch PCB : <a href=\"https://allfixelectrical.com.au/products/electrolux-ergorapido-zb3010-zb3012-zb3013-handle-switch-pcb-part-938068007\">https://allfixelectrical.com.au/products/electrolux-ergorapido-zb3010-zb3012-zb3013-handle-switch-pcb-part-938068007</a></li>\n</ul>\n<hr />\n<p>Also found this youtube video useful <a href=\"https://www.youtube.com/watch?v=38R1_EWN77s\">https://www.youtube.com/watch?v=38R1_EWN77s</a></p>\n<p>Using these above clue I was able to give my best guess on the design and sketch up the schematic</p>\n<p><img src=\"2025-08-04_Electrolux_ErgoRapido_ZB3012.svg\" alt=\"\" /></p>\n<p>You can open it as a <a href=\"2025-08-04_Electrolux_ErgoRapido_ZB3012.pdf\">pdf</a> or <a href=\"2025-08-04_Electrolux_ErgoRapido_ZB3012.dxf\">dxf</a> or download the <a href=\"2025-08-04_Electrolux_ErgoRapido_ZB3012.kicad_sch\">KiCAD Schematic</a></p>\n<p>Overall the key insight is:</p>\n<ul>\n<li>\n<p>The button control consist of two wires, where different resistance is applied to trigger different button press.</p>\n<ul>\n<li>1kohm resistor: Power Up/Down Toggle</li>\n<li>4.7kohms resistor: Power On/Off Toggle</li>\n</ul>\n</li>\n<li>\n<p>Charging indicator</p>\n<ul>\n<li>I don't fully understand this, but i suspect it's using a BJT to control the power going to an indicator led that is triggered only if current is flowing from the power input to the battery charger terminal.</li>\n<li>This appears to be dropped in the name of reducing product cost over time, but there was no incentive to change the design.</li>\n</ul>\n</li>\n</ul>\n<p>I've logged it to the schematic above regardless of if it's of use (or my reverse engineering correctness) currently as the design process is still interesting. Especially the use of resistors to indicate multiple different buttons, which is kind of what some wired mobile phone headphones are doing.</p>\n",
      "date_published": "2025-08-03T00:00:00Z"
    },
    {
      "id": "/blog/2025/07/27/a-justfile-for-use-with-ptouch-print/",
      "url": "/blog/2025/07/27/a-justfile-for-use-with-ptouch-print/",
      "title": "A Justfile for use with ptouch-print",
      "content_html":"<p>Found a really good guide on using <a href=\"https://git.familie-radermacher.ch/linux/ptouch-print.git\">ptouch-print</a> in <a href=\"https://github.com/HenrikBengtsson/brother-ptouch-label-printer-on-linux\">this github notes</a></p>\n<hr />\n<p>Took a bit of time, but figure out how to get it working on PT-P710BT.</p>\n<p>To make life easier for future people to get started, here's the justfile if you have <a href=\"https://just.systems/man/en/\">just</a> installed. Or you could just read it directly as a quick guide.</p>\n<pre class=\"language-justfile\"><code class=\"language-justfile\"># Directory where build files and artifacts are generated\nBUILD_DIR := \"build\"\n\n# Default target: build the project and install system-wide\ndefault: install\n\ndebian-dependencies:\n    sudo apt-get install gettext git pkg-config libgd-dev libusb-dev libusb-1.0-0-dev\n\n# Build the project in the build directory\nbuild:\n    #!/bin/bash\n    set -e  # Exit immediately if a command fails\n    mkdir -p \n    cd \n    # Configure the project with Release build type and generate build files\n    cmake ../ -DCMAKE_BUILD_TYPE=Release\n    # Compile the project using generated build files\n    make\n\n# Install the built files system-wide (requires sudo)\ninstall: build\n    sudo cmake --install \n\n# Remove build artifacts to clean the workspace\nclean:\n    rm -rf \n\n# Print printer info\nprinter-info:\n    ptouch-print --info\n\n# Test printing simple text on one line (Dry Run)\ntest-one-line:\n    ptouch-print --text 'A' --writepng test.png\n    xdg-open test.png\n\n# Test printing simple text on two line (Dry Run)\ntest-two-line:\n    ptouch-print --text 'A' 'B' --writepng test.png\n    xdg-open test.png\n\n# Test printing simple text on one line (Dry Run)\ntest-print-one-line:\n    ptouch-print --text 'A'\n\n# Test printing simple text on two line (Dry Run)\ntest-print-two-line:\n    ptouch-print --text 'A' 'B'</code></pre>\n",
      "date_published": "2025-07-27T00:00:00Z"
    },
    {
      "id": "/blog/2025/06/11/querying-json-api-and-http-endpoint-using-only-python-endpoints/",
      "url": "/blog/2025/06/11/querying-json-api-and-http-endpoint-using-only-python-endpoints/",
      "title": "Querying json api and http endpoint using only python endpoints",
      "content_html":"<p>Occationally I would have a http api endpoint that I would like to access and use via a python script. However most examples online requires installing <a href=\"https://docs.python-requests.org/en/latest/index.html\">https://docs.python-requests.org/en/latest/index.html</a>. This is certainly a good advice for more complex scripts... but for stand-alone scripts where you just want to use only builtin python features... it would fail. Below are some functions that does away with such requirements.</p>\n<hr />\n<p>Also note that I've added user-agent support here as some endpoints I try to use, assumes that you are trying to access it via another browser. This will not work for more locked down apis, but it shall be fine for most cases.</p>\n<pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">import</span> urllib<span class=\"token punctuation\">.</span>request\n<span class=\"token keyword\">import</span> json\n\n<span class=\"token keyword\">def</span> <span class=\"token function\">get_url_content</span><span class=\"token punctuation\">(</span>url<span class=\"token punctuation\">:</span> <span class=\"token builtin\">str</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">-</span><span class=\"token operator\">></span> <span class=\"token builtin\">str</span><span class=\"token punctuation\">:</span>\n    <span class=\"token triple-quoted-string string\">\"\"\"\n    Retrieves the content of a given URL as a string.\n    Args:\n        url (str): The URL to retrieve content from.\n    Returns:\n        str: The content of the response.\n    \"\"\"</span>\n    <span class=\"token keyword\">try</span><span class=\"token punctuation\">:</span>\n        headers <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n            <span class=\"token string\">'User-Agent'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'Mozilla/5.0'</span>\n        <span class=\"token punctuation\">}</span>\n        request <span class=\"token operator\">=</span> urllib<span class=\"token punctuation\">.</span>request<span class=\"token punctuation\">.</span>Request<span class=\"token punctuation\">(</span>url<span class=\"token punctuation\">,</span> headers<span class=\"token operator\">=</span>headers<span class=\"token punctuation\">)</span>\n        response <span class=\"token operator\">=</span> urllib<span class=\"token punctuation\">.</span>request<span class=\"token punctuation\">.</span>urlopen<span class=\"token punctuation\">(</span>request<span class=\"token punctuation\">)</span>\n        <span class=\"token keyword\">if</span> <span class=\"token keyword\">not</span> response<span class=\"token punctuation\">.</span>getcode<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token number\">200</span><span class=\"token punctuation\">:</span>\n            <span class=\"token keyword\">raise</span> Exception<span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f\"Failed to retrieve content. Status code: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>response<span class=\"token punctuation\">.</span>getcode<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">}</span></span><span class=\"token string\">\"</span></span><span class=\"token punctuation\">)</span>\n        <span class=\"token keyword\">return</span> response<span class=\"token punctuation\">.</span>read<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>decode<span class=\"token punctuation\">(</span><span class=\"token string\">'utf-8'</span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">except</span> urllib<span class=\"token punctuation\">.</span>error<span class=\"token punctuation\">.</span>HTTPError <span class=\"token keyword\">as</span> e<span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f\"HTTP Error: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>e<span class=\"token punctuation\">}</span></span><span class=\"token string\">\"</span></span><span class=\"token punctuation\">)</span>\n        <span class=\"token keyword\">return</span> <span class=\"token boolean\">None</span>\n    <span class=\"token keyword\">except</span> Exception <span class=\"token keyword\">as</span> e<span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f\"An error occurred: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>e<span class=\"token punctuation\">}</span></span><span class=\"token string\">\"</span></span><span class=\"token punctuation\">)</span>\n        <span class=\"token keyword\">return</span> <span class=\"token boolean\">None</span>\n\n<span class=\"token keyword\">def</span> <span class=\"token function\">get_url_json_api</span><span class=\"token punctuation\">(</span>url<span class=\"token punctuation\">:</span> <span class=\"token builtin\">str</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">-</span><span class=\"token operator\">></span> <span class=\"token builtin\">dict</span><span class=\"token punctuation\">:</span>\n    <span class=\"token triple-quoted-string string\">\"\"\"\n    Retrieves JSON content from a given URL.\n    Args:\n        url (str): The URL to retrieve JSON content from.\n    Returns:\n        dict: The parsed JSON content.\n    \"\"\"</span>\n    received_content <span class=\"token operator\">=</span> get_url_content<span class=\"token punctuation\">(</span>url<span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">if</span> <span class=\"token keyword\">not</span> received_content<span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">return</span> <span class=\"token boolean\">None</span>\n    <span class=\"token keyword\">try</span><span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">return</span> json<span class=\"token punctuation\">.</span>loads<span class=\"token punctuation\">(</span>received_content<span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">except</span> json<span class=\"token punctuation\">.</span>JSONDecodeError <span class=\"token keyword\">as</span> e<span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f\"Failed to parse JSON. Error: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>e<span class=\"token punctuation\">}</span></span><span class=\"token string\">\"</span></span><span class=\"token punctuation\">)</span>\n        <span class=\"token keyword\">return</span> <span class=\"token boolean\">None</span></code></pre>\n",
      "date_published": "2025-06-11T00:00:00Z"
    },
    {
      "id": "/blog/2025/06/11/figuring-how-to-access-item-s-semi-hidden-api-for-product-information-search/",
      "url": "/blog/2025/06/11/figuring-how-to-access-item-s-semi-hidden-api-for-product-information-search/",
      "title": "Figuring how to access ITEM&#39;s semi-hidden api for product information search",
      "content_html":"<p>When creating a build of materials from ITEM, I was hoping for a way to easily get the latest specs and other basic product information from it.\nThis shows how I figured it out.</p>\n<hr />\n<p>First I was browsing the page <a href=\"https://www.item24.com/en-au/0002633\">https://www.item24.com/en-au/0002633</a> which autoresolved to <a href=\"https://www.item24.com/en-au/profile-8-40x40-light-natural-2633\">https://www.item24.com/en-au/profile-8-40x40-light-natural-2633</a> on the browser.</p>\n<p>I then checked the source of the page and found this interesting section:</p>\n<pre class=\"language-html\"><code class=\"language-html\">  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>body</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>font-item dark:bg-item-grey-90 text-item-grey-60 bg-white dark:text-white<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">id</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>top<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span> <span class=\"token special-attr\"><span class=\"token attr-name\">style</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span><span class=\"token value css language-css\"><span class=\"token property\">display</span><span class=\"token punctuation\">:</span> contents</span><span class=\"token punctuation\">\"</span></span></span><span class=\"token punctuation\">></span></span>...\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">type</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>application/json<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">data-sveltekit-fetched</span> <span class=\"token attr-name\">data-url</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>https://api.item24.com/object-aggregation/objects/en?exclude-helper-geometries=true<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>product=2633<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>visible-only=true<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>limit=1<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>country=AU<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>availability=available<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>availability=soon<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>availability=discontinued<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>availability=temp-not-available<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token script\"><span class=\"token language-javascript\"><span class=\"token punctuation\">{</span><span class=\"token string-property property\">\"status\"</span><span class=\"token operator\">:</span><span class=\"token number\">200</span><span class=\"token punctuation\">,</span><span class=\"token string-property property\">\"statusText\"</span><span class=\"token operator\">:</span><span class=\"token string\">\"OK\"</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">...</span><span class=\"token operator\">...</span><span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span> <span class=\"token punctuation\">}</span></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">type</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>application/json<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">data-sveltekit-fetched</span> <span class=\"token attr-name\">data-url</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>https://api.item24.com/object-aggregation/parameters/en?id=4v0.4<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=398v0.2<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=1v1.1<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=494v2.9<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=2v1.2<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=29v0.2<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=589v0.2<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=5v2.9<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=37v1.2<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=24v2.9<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=63v0.2<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=68v0.1<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=69v0.1<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=10v0.0<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token script\"><span class=\"token language-javascript\"><span class=\"token punctuation\">{</span><span class=\"token string-property property\">\"status\"</span><span class=\"token operator\">:</span><span class=\"token number\">200</span><span class=\"token punctuation\">,</span><span class=\"token string-property property\">\"statusText\"</span><span class=\"token operator\">:</span><span class=\"token string\">\"OK\"</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">...</span><span class=\"token punctuation\">.</span> <span class=\"token punctuation\">}</span></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">type</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>application/json<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">data-sveltekit-fetched</span> <span class=\"token attr-name\">data-url</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>https://api.item24.com/product-data/products/2633?lang=en<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token script\"><span class=\"token language-javascript\"><span class=\"token punctuation\">{</span><span class=\"token string-property property\">\"status\"</span><span class=\"token operator\">:</span><span class=\"token number\">200</span><span class=\"token punctuation\">,</span><span class=\"token string-property property\">\"statusText\"</span><span class=\"token operator\">:</span><span class=\"token string\">\"OK\"</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">...</span><span class=\"token operator\">...</span><span class=\"token punctuation\">.</span> <span class=\"token punctuation\">}</span></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">type</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>application/json<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">data-sveltekit-fetched</span> <span class=\"token attr-name\">data-url</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>https://api.item24.com/object-aggregation/categories/223e008e-a679-485a-a33e-b628bfa7839d/en/paths/objects/7<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token script\"><span class=\"token language-javascript\"><span class=\"token punctuation\">{</span><span class=\"token string-property property\">\"status\"</span><span class=\"token operator\">:</span><span class=\"token number\">200</span><span class=\"token punctuation\">,</span><span class=\"token string-property property\">\"statusText\"</span><span class=\"token operator\">:</span><span class=\"token string\">\"OK\"</span><span class=\"token punctuation\">,</span>  <span class=\"token operator\">...</span><span class=\"token operator\">...</span>  <span class=\"token punctuation\">}</span></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">type</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>application/json<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">data-sveltekit-fetched</span> <span class=\"token attr-name\">data-url</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>https://api.item24.com/product-data/specifications?id=BAUREIHE_BR8<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=ESD_1<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=KZ_REACH_J<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=KZ_ROHS_J<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>lang=en<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token script\"><span class=\"token language-javascript\"><span class=\"token punctuation\">{</span><span class=\"token string-property property\">\"status\"</span><span class=\"token operator\">:</span><span class=\"token number\">200</span><span class=\"token punctuation\">,</span><span class=\"token string-property property\">\"statusText\"</span><span class=\"token operator\">:</span><span class=\"token string\">\"OK\"</span><span class=\"token punctuation\">,</span><span class=\"token string-property property\">\"headers\"</span><span class=\"token operator\">:</span><span class=\"token punctuation\">{</span><span class=\"token string-property property\">\"content-type\"</span><span class=\"token operator\">:</span><span class=\"token string\">\"application/json; charset=utf-8\"</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span><span class=\"token string-property property\">\"body\"</span><span class=\"token operator\">:</span><span class=\"token string\">\"[{\\\"id\\\":\\\"BAU ......  batteries, etc.\\\"}]\"</span><span class=\"token punctuation\">}</span></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">type</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>application/json<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">data-sveltekit-fetched</span> <span class=\"token attr-name\">data-url</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>https://api.item24.com/product-data/products?id=2601<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=62716<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=42709<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>country=AU<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>availability=available<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>availability=soon<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>availability=discontinued<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>availability=temp-not-available<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>lang=en<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>fields=id%2Ctitle%2Cattributes%2Cmedia%2FpreviewImage%2Cslug<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>limit=3<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>offset=0<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token script\"><span class=\"token language-javascript\"><span class=\"token punctuation\">{</span><span class=\"token string-property property\">\"status\"</span><span class=\"token operator\">:</span><span class=\"token number\">200</span><span class=\"token punctuation\">,</span><span class=\"token string-property property\">\"statusText\"</span><span class=\"token operator\">:</span><span class=\"token string\">\"OK\"</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">...</span><span class=\"token operator\">...</span><span class=\"token operator\">...</span><span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span> <span class=\"token punctuation\">}</span></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">type</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>application/json<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">data-sveltekit-fetched</span> <span class=\"token attr-name\">data-url</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>https://api.item24.com/product-data/attributes?id=ANTISTATIK<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=ANZAHL_GRUNDMENGE<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=ANZAHL_STUECK<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=AVAILABLEINSEARCH<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=BAUREIHE<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=BAUREIHE_STATISTIK<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=BAUSYMBLEISTE<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=BIEGUNGSRECHNER<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=CADBOX<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=CANBEUSEDFORENGINEERING<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=DIRECTLYORDERABLE<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=EINHEIT<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=ESD<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=FLAECHE<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=FL_MOMENT_TOR<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=FL_MOMENT_X<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=FL_MOMENT_Y<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=GEW_SPEZ_L_KG%2FM<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=HD_ART_AKTIV_KZ<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=HD_ART_KZ<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=HD_ART_RABATT_KZ<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=INHALTSEINHEIT<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=KD_ART_RABATT_KZ<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=KZ_BASISARTIKEL<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=KZ_MASTERARTIKEL<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=KZ_REACH<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=KZ_ROHS<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=KZ_VERFUEGBARKEIT<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=LIEFEREINHEIT<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=LIEFEREINHEIT_AX<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=MATERIAL<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=MAXLAENGE_MM<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=MINLAENGE_MM<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=NUTAUSZUG<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=ORDER_UNIT_TYPE<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=PL_SORTIMENT<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=POSITIONSRABATT<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=PRODUKTFARBE<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=PRODUKTGRUPPE<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=PROFILBAUART<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=REVERSE_CHARGE<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=SELECTOR<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=SELECTOR<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=SYSTEM<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=VORSTELLDATUM<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=WARENGRUPPE<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=WI_MOMENT_X<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=WI_MOMENT_Y<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=ZOLLTARIFNUMMER<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>id=ZUSCHLAGART<span class=\"token entity named-entity\" title=\"&amp;\">&amp;amp;</span>lang=en<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token script\"><span class=\"token language-javascript\"><span class=\"token punctuation\">{</span><span class=\"token string-property property\">\"status\"</span><span class=\"token operator\">:</span><span class=\"token number\">200</span><span class=\"token punctuation\">,</span><span class=\"token string-property property\">\"statusText\"</span><span class=\"token operator\">:</span><span class=\"token string\">\"OK\"</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">...</span><span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span> <span class=\"token punctuation\">}</span></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span><span class=\"token punctuation\">></span></span><span class=\"token script\"><span class=\"token language-javascript\">\n        <span class=\"token operator\">...</span> some sort <span class=\"token keyword\">of</span> page logic here <span class=\"token operator\">...</span>\n\t\t\t</span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>body</span><span class=\"token punctuation\">></span></span></code></pre>\n<p>There was this url <a href=\"https://api.item24.com/product-data/products/2633\">https://api.item24.com/product-data/products/2633</a></p>\n<p>When accessed I get this output:</p>\n<details>\n  <summary>(json output here of the link above)</summary>\n<pre class=\"language-json\"><code class=\"language-json\"><span class=\"token punctuation\">{</span>\n  <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2633\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"formattedId\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"0.0.026.33\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"title\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Profil 8 40x40 leicht, natur\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Profile 8 40x40 light, natural\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Profilé 8 40x40 léger, naturel\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Profilato 8 40x40 leggero, naturale\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Profil 8 40x40 lekki, kolor naturalny\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Perfil 8 40x40 L, natural\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"型材 8 系列 40x40 轻型，氧化银白\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Profil 8 40 x 40 L, přírodní odstín\"</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"lastModified\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1748946630</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"keywords\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01006\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01006\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01006\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01006\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01006\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01006\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01006\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01006\"</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01076\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01076\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01076\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01076\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01076\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01076\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01076\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01076\"</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01077\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01077\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01077\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01077\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01077\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01077\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01077\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01077\"</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item\"</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item24\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item24\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item24\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item24\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item24\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item24\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item24\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item24\"</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ESD\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ESD\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ESD\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ESD\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ESD\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ESD\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"静电放电\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ESD\"</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"REACH\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"REACH\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"REACH\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"REACH\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"REACH\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"REACH\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"REACH\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"REACH\"</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"RoHS\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"RoHS\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"RoHS\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"RoHS\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"RoHS\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"RoHS\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"RoHS\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"RoHS\"</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Alu-Profile\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"铝型材\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Aluprofil\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"铝型材\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Aluprofile\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"铝型材\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Alustangen\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"铝棒\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Alustrebe\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"铝制工作面\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Grundelemente\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"基础元件\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item Profil\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item 型材\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Itemprofil\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item-profil\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Konstruktionsprofile\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Construction Profiles\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"结构型材\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Leichtes Stangenprofil\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"轻质杆状型材\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Leichtes Vierkantprofil\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"轻质方形型材\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Leichtprofil\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"轻质型材\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Leichtprofile\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"轻质型材\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Nutenprofile\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"凹槽型材\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Profilrohr\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"型材管\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Profilrohr leicht eckig\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"略带棱角的型材管\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Profilstange\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"型材棒\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Profilstrebe\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"型材工作面\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Präzisionsprofile\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"精密型材\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Rastermaß\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Modular Dimensions\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Dimensions modulaires\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Misure modulari\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"光栅大小\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Strebe\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"斜撑组件\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Vierkant-Alu-Profile\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"方形铝型材\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Vierkantprofile\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"方形型材\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Vierkantrohre\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"方管\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"0.0.026.56\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"0.0.026.56\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"0.0.026.56\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"0.0.026.56\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"0.0.026.56\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"0.0.026.56\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"0.0.026.56\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"0.0.026.56\"</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"0.0.026.57\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"0.0.026.57\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"0.0.026.57\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"0.0.026.57\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"0.0.026.57\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"0.0.026.57\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"0.0.026.57\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"0.0.026.57\"</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2656\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2656\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2656\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2656\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2656\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2656\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2656\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2656\"</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2657\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n    <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"availableInstances\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n    <span class=\"token string\">\"CC\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string\">\"CH\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string\">\"CZ\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string\">\"DE\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string\">\"ES\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string\">\"FR\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string\">\"GB\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string\">\"IT\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string\">\"PL\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string\">\"US\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string\">\"COM\"</span>\n  <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"targetGroup\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n    <span class=\"token string\">\"customer\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string\">\"retailer\"</span>\n  <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"availability\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"available\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"directlyOrderable\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"availableInSearch\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"configurator\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"none\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"cadbox\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"academy\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"attributes\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ANTISTATIK\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"J\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ANZAHL_GRUNDMENGE\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ANZAHL_STUECK\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"AVAILABLEINSEARCH\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"BAUREIHE\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"BR8\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">true</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"BAUREIHE_STATISTIK\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"BRS8\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"BAUSYMBLEISTE\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"X-X-8-X\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"BIEGUNGSRECHNER\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ALUMINIUMPROFIL\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"CADBOX\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"J\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"CANBEUSEDFORENGINEERING\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"DIRECTLYORDERABLE\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EINHEIT\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ZUSCHNITT\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ESD\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">true</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"FLAECHE\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token number\">6.46</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">true</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"FL_MOMENT_TOR\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1.36</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">true</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"FL_MOMENT_X\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token number\">9</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">true</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"FL_MOMENT_Y\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token number\">9</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">true</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"GEW_SPEZ_L_KG/M\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1.74</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">true</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"HD_ART_AKTIV_KZ\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"J\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"HD_ART_KZ\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"J\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"HD_ART_RABATT_KZ\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"J\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"INHALTSEINHEIT\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"M\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"KD_ART_RABATT_KZ\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"J\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"KZ_BASISARTIKEL\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"J\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"KZ_MASTERARTIKEL\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"J\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"KZ_REACH\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"J\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"KZ_ROHS\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"J\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"KZ_VERFUEGBARKEIT\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"V\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"LIEFEREINHEIT\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"MAX6000\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">true</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"LIEFEREINHEIT_AX\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"M\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"MATERIAL\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"AL_ELOX\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">true</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"MAXLAENGE_MM\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token number\">6000</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"MINLAENGE_MM\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token number\">20</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"NUTAUSZUG\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2500</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">true</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ORDER_UNIT_TYPE\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"CUT\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"PL_SORTIMENT\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"KD-HD\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"POSITIONSRABATT\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"BR8#4_AL\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"PRODUKTFARBE\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"NATUR-AL\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">true</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"PRODUKTGRUPPE\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"BM\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"PROFILBAUART\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"LEICHT\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"REVERSE_CHARGE\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"N\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"SELECTOR\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"BAUR8\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"SELECTOR\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"CHINA\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"SYSTEM\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"MB\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"VORSTELLDATUM\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"1985-07-01T00:00:00\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"WARENGRUPPE\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"WG4_AL\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"WI_MOMENT_X\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token number\">4.5</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">true</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"WI_MOMENT_Y\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token number\">4.5</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">true</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ZOLLTARIFNUMMER\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"76042100\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ZUSCHLAGART\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"A\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"visible\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span>\n    <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"specifications\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n    <span class=\"token string\">\"BAUREIHE_BR8\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string\">\"ESD_1\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string\">\"KZ_REACH_J\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string\">\"KZ_ROHS_J\"</span>\n  <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"texts\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token property\">\"description\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"delivery\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"descriptionShort\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Entdecken Sie das item Profil 8 40x40 leicht – hochwertig eloxiertes Aluminium; gewichtsreduziert. Vier offene Profilnuten 8. Jetzt item Profile 8 40x40 kaufen! \"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item Profile 8 40x40 is suitable for all kinds of fastening options. ESD-safe and approved under Directive 2002/95/EC.\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Le profilé item de la ligne 8 au format 40x40 convient à de nombreuses options de raccordement. Avec sécurité ESD et homologation selon 2002/95/CE.\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Il profilato della serie 8 con dimensioni 40x40 item è indicato per diverse possibilità di collegamento. Antistatico e omologato secondo la normativa CE 2002/95/CE.\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Profil item serii 8 o wymiarach 40x40 nadaje się do wykorzystania w najróżniejszych połączeniach. Ochrona przed ESD i dopuszczenie do użytku według WE 2002/95/WE.\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"El perfil 8 40x40 de item es adecuado para todo tipo de opciones de fijación. Con protección ESD y aprobación de acuerdo con la Directiva 2002/95/CE.\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"technicalNote\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"features\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"media\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token property\">\"mainImage\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"keywords\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n        <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Alu-Profile\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"铝型材\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Rastermaß\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Modular Dimensions\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Dimensions modulaires\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Misure modulari\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"光栅大小\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Gesamtkatalog 8\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"MB8\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"MB8\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n        <span class=\"token punctuation\">}</span>\n      <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"title\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"alt\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"text\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"&lt;div class=\\\"gs01\\\">Die Profile 8 eignen sich für Konstruktionen aller Art.&lt;br />Mit den Baureihen Profile 8, Profile 8 leicht und Profile 8 E kann der Materialeinsatz an die \\r\\nAufgabenstellung angepasst werden.&lt;/div>\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"&lt;div class=\\\"gs01\\\">Profiles 8 are suitable for constructions of all kinds.&lt;br />\\r\\nThe choice of Profiles 8, Profiles 8 light and Profiles 8 E enable the most suitable material to be selected for a given construction task.&lt;/div>\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"&lt;div class=\\\"gs01\\\">Les profilés 8 sont particulièrement appropriés pour les constructions de châssis, de tables, de cartérisations, etc...&lt;br />Les différents types : économiques, légers et lourds permettent l’optimisation de chaque construction.&lt;/div>\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"&lt;div class=\\\"gs01\\\">I profilati 8 sono adatti per realizzare strutture di ogni tipo. Con le serie Profilati 8, Profilati 8 leggeri e Profilati 8 E è possibile adeguare l’impiego di materiale alla \\r\\nspecifica problematica.&lt;/div>\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"&lt;div class=\\\"gs01\\\">Profile typoszeregu 8 nadają się do wszelkiego rodzaju konstrukcji.&lt;br />Profile ciężkie, lekkie oraz ekonomiczne pozwalają na odpowiednie dostosowanie materiału do wyznaczonych zadań.&lt;/div>\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"&lt;div class=\\\"gs01\\\">Los perfiles 8 son ideales para construcciones de todo tipo.&lt;br />\\nLa elección de perfiles de la serie H, 8 L y 8 E, permite seleccionar el material más adecuado para cada tarea de construcción.&lt;/div>\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"&lt;div class=\\\"gs01\\\">铝型材 8 系列适用于所有类型的结构件。&lt;br />铝型材 8 系列、铝型材 8 系列轻型和铝型材 8 系列经济型的选择，使其能够为既定的搭建任务选用最适合的材质。&lt;/div>\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"&lt;div class=\\\"gs01\\\">Profily 8 jsou vhodné pro všechny typy konstrukcí.&lt;br />Díky konstrukčním řadám profilů 8, profilů 8 L &lt;span class=\\\"nobreak\\\">a profilů 8 E&lt;/span> lze pomocí použitých prvků snadno splnit požadované zadání.&lt;/div>\"</span>\n      <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sources\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3000</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AINO_%23V3.jpg\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1333</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP2000_%23V3.webp\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">500</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">333</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP500_%23V3.webp\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">167</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP250_%23V3.webp\"</span>\n          <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3000</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AINO_%23V3.jpg\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1333</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP2000_%23V3.webp\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">500</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">333</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP500_%23V3.webp\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">167</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP250_%23V3.webp\"</span>\n          <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3000</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AINO_%23V3.jpg\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1333</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP2000_%23V3.webp\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">500</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">333</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP500_%23V3.webp\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">167</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP250_%23V3.webp\"</span>\n          <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3000</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AINO_%23V3.jpg\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1333</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP2000_%23V3.webp\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">500</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">333</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP500_%23V3.webp\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">167</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP250_%23V3.webp\"</span>\n          <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3000</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AINO_%23V3.jpg\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1333</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP2000_%23V3.webp\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">500</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">333</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP500_%23V3.webp\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">167</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP250_%23V3.webp\"</span>\n          <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3000</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AINO_%23V3.jpg\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1333</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP2000_%23V3.webp\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">500</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">333</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP500_%23V3.webp\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">167</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP250_%23V3.webp\"</span>\n          <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3000</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AINO_%23V3.jpg\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1333</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP2000_%23V3.webp\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">500</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">333</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP500_%23V3.webp\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">167</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP250_%23V3.webp\"</span>\n          <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3000</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AINO_%23V3.jpg\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1333</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP2000_%23V3.webp\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">500</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">333</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP500_%23V3.webp\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">167</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP250_%23V3.webp\"</span>\n          <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">]</span>\n      <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"previewImage\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"keywords\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n        <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Previewgrafik\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Vorschau\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Vorschaugrafik\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n        <span class=\"token punctuation\">}</span>\n      <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"title\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"alt\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"text\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sources\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">512</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">512</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PRE_0002633_%23SALL_%23AINO_%23V1.jpg\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PRE_0002633_%23SALL_%23AWEBP250GP_%23V1.webp\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PRE_0002633_%23SALL_%23AWEBP500GP_%23V1.webp\"</span>\n          <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">512</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">512</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PRE_0002633_%23SALL_%23AINO_%23V1.jpg\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PRE_0002633_%23SALL_%23AWEBP250GP_%23V1.webp\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PRE_0002633_%23SALL_%23AWEBP500GP_%23V1.webp\"</span>\n          <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">512</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">512</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PRE_0002633_%23SALL_%23AINO_%23V1.jpg\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PRE_0002633_%23SALL_%23AWEBP250GP_%23V1.webp\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PRE_0002633_%23SALL_%23AWEBP500GP_%23V1.webp\"</span>\n          <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">512</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">512</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PRE_0002633_%23SALL_%23AINO_%23V1.jpg\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PRE_0002633_%23SALL_%23AWEBP250GP_%23V1.webp\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PRE_0002633_%23SALL_%23AWEBP500GP_%23V1.webp\"</span>\n          <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">512</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">512</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PRE_0002633_%23SALL_%23AINO_%23V1.jpg\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PRE_0002633_%23SALL_%23AWEBP250GP_%23V1.webp\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PRE_0002633_%23SALL_%23AWEBP500GP_%23V1.webp\"</span>\n          <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">512</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">512</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PRE_0002633_%23SALL_%23AINO_%23V1.jpg\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PRE_0002633_%23SALL_%23AWEBP250GP_%23V1.webp\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PRE_0002633_%23SALL_%23AWEBP500GP_%23V1.webp\"</span>\n          <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">512</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">512</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PRE_0002633_%23SALL_%23AINO_%23V1.jpg\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PRE_0002633_%23SALL_%23AWEBP250GP_%23V1.webp\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PRE_0002633_%23SALL_%23AWEBP500GP_%23V1.webp\"</span>\n          <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">512</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">512</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PRE_0002633_%23SALL_%23AINO_%23V1.jpg\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PRE_0002633_%23SALL_%23AWEBP250GP_%23V1.webp\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PRE_0002633_%23SALL_%23AWEBP500GP_%23V1.webp\"</span>\n          <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">]</span>\n      <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"images\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n      <span class=\"token punctuation\">{</span>\n        <span class=\"token property\">\"keywords\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Alu-Profile\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"铝型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Rastermaß\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Modular Dimensions\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Dimensions modulaires\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Misure modulari\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"光栅大小\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Gesamtkatalog 8\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"MB8\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"MB8\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"classes\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n          <span class=\"token string\">\"Hauptbild\"</span>\n        <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"title\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"alt\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"text\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"&lt;div class=\\\"gs01\\\">Die Profile 8 eignen sich für Konstruktionen aller Art.&lt;br />Mit den Baureihen Profile 8, Profile 8 leicht und Profile 8 E kann der Materialeinsatz an die \\r\\nAufgabenstellung angepasst werden.&lt;/div>\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"&lt;div class=\\\"gs01\\\">Profiles 8 are suitable for constructions of all kinds.&lt;br />\\r\\nThe choice of Profiles 8, Profiles 8 light and Profiles 8 E enable the most suitable material to be selected for a given construction task.&lt;/div>\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"&lt;div class=\\\"gs01\\\">Les profilés 8 sont particulièrement appropriés pour les constructions de châssis, de tables, de cartérisations, etc...&lt;br />Les différents types : économiques, légers et lourds permettent l’optimisation de chaque construction.&lt;/div>\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"&lt;div class=\\\"gs01\\\">I profilati 8 sono adatti per realizzare strutture di ogni tipo. Con le serie Profilati 8, Profilati 8 leggeri e Profilati 8 E è possibile adeguare l’impiego di materiale alla \\r\\nspecifica problematica.&lt;/div>\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"&lt;div class=\\\"gs01\\\">Profile typoszeregu 8 nadają się do wszelkiego rodzaju konstrukcji.&lt;br />Profile ciężkie, lekkie oraz ekonomiczne pozwalają na odpowiednie dostosowanie materiału do wyznaczonych zadań.&lt;/div>\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"&lt;div class=\\\"gs01\\\">Los perfiles 8 son ideales para construcciones de todo tipo.&lt;br />\\nLa elección de perfiles de la serie H, 8 L y 8 E, permite seleccionar el material más adecuado para cada tarea de construcción.&lt;/div>\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"&lt;div class=\\\"gs01\\\">铝型材 8 系列适用于所有类型的结构件。&lt;br />铝型材 8 系列、铝型材 8 系列轻型和铝型材 8 系列经济型的选择，使其能够为既定的搭建任务选用最适合的材质。&lt;/div>\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"&lt;div class=\\\"gs01\\\">Profily 8 jsou vhodné pro všechny typy konstrukcí.&lt;br />Díky konstrukčním řadám profilů 8, profilů 8 L &lt;span class=\\\"nobreak\\\">a profilů 8 E&lt;/span> lze pomocí použitých prvků snadno splnit požadované zadání.&lt;/div>\"</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"sources\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AINO_%23V3.jpg\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP2000_%23V3.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">500</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP500_%23V3.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">167</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP250_%23V3.webp\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AINO_%23V3.jpg\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP2000_%23V3.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">500</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP500_%23V3.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">167</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP250_%23V3.webp\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AINO_%23V3.jpg\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP2000_%23V3.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">500</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP500_%23V3.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">167</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP250_%23V3.webp\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AINO_%23V3.jpg\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP2000_%23V3.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">500</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP500_%23V3.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">167</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP250_%23V3.webp\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AINO_%23V3.jpg\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP2000_%23V3.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">500</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP500_%23V3.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">167</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP250_%23V3.webp\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AINO_%23V3.jpg\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP2000_%23V3.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">500</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP500_%23V3.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">167</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP250_%23V3.webp\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AINO_%23V3.jpg\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP2000_%23V3.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">500</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP500_%23V3.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">167</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP250_%23V3.webp\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AINO_%23V3.jpg\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP2000_%23V3.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">500</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP500_%23V3.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">167</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_PRD_PRF_8-0270c4_%23SALL_%23AWEBP250_%23V3.webp\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span>\n        <span class=\"token punctuation\">}</span>\n      <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n      <span class=\"token punctuation\">{</span>\n        <span class=\"token property\">\"keywords\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"uneloxiert\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Alu-Profile\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"铝型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Aluprofil\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"铝型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Aluprofile\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"铝型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Alustangen\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"铝棒\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Alustrebe\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"铝制工作面\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Grundelemente\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"基础元件\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item Profil\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item 型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Itemprofil\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item-profil\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Konstruktionsprofile\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Construction Profiles\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"结构型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Leichtes Stangenprofil\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"轻质杆状型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Leichtes Vierkantprofil\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"轻质方形型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Leichtprofil\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"轻质型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Nut 8\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Nutenprofile\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"凹槽型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Profilrohr\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"型材管\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Profilrohr leicht eckig\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"略带棱角的型材管\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Profilstange\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"型材棒\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Profilstrebe\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"型材工作面\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Präzisionsprofile\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"精密型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Rastermaß\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Modular Dimensions\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Dimensions modulaires\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Misure modulari\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"光栅大小\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Strebe\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"斜撑组件\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Vierkant-Alu-Profile\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"方形铝型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Vierkantprofile\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"方形型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Vierkantrohre\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"方管\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Neuheiten 2023 I\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2023/ I\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2023/ I\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2023/ I\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2023/ I\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2023/ I\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2023/ I\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2023/ I\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2023/ I\"</span>\n          <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"classes\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n          <span class=\"token string\">\"engineeringDrawing\"</span>\n        <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"title\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"alt\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"text\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"sources\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"svg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">75</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">85</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PMA_PRF_02633-x_%23SALL_%23AINO_%23V1.svg\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"svg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">75</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">85</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PMA_PRF_02633-x_%23SALL_%23AINO_%23V1.svg\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"svg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">75</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">85</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PMA_PRF_02633-x_%23SALL_%23AINO_%23V1.svg\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"svg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">75</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">85</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PMA_PRF_02633-x_%23SALL_%23AINO_%23V1.svg\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"svg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">75</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">85</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PMA_PRF_02633-x_%23SALL_%23AINO_%23V1.svg\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"svg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">75</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">85</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PMA_PRF_02633-x_%23SALL_%23AINO_%23V1.svg\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"svg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">75</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">85</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PMA_PRF_02633-x_%23SALL_%23AINO_%23V1.svg\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"svg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">75</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">85</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PMA_PRF_02633-x_%23SALL_%23AINO_%23V1.svg\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span>\n        <span class=\"token punctuation\">}</span>\n      <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n      <span class=\"token punctuation\">{</span>\n        <span class=\"token property\">\"keywords\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01006\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01006\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01006\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01006\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01006\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01006\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01006\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01006\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01076\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01076\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01076\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01076\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01076\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01076\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01076\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01076\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01077\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01077\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01077\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01077\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01077\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01077\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01077\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"EX-01077\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item24\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item24\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item24\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item24\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item24\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item24\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item24\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item24\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ESD\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ESD\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ESD\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ESD\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ESD\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ESD\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"静电放电\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ESD\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Alu-Profile\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"铝型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Aluprofil\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"铝型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Aluprofile\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"铝型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Alustangen\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"铝棒\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Alustrebe\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"铝制工作面\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Grundelemente\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"基础元件\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item Profil\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item 型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Itemprofil\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item-profil\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Konstruktionsprofile\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Construction Profiles\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"结构型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Leichtes Stangenprofil\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"轻质杆状型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Leichtes Vierkantprofil\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"轻质方形型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Leichtprofil\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"轻质型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Leichtprofile\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"轻质型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Nutenprofile\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"凹槽型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Profilrohr\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"型材管\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Profilrohr leicht eckig\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"略带棱角的型材管\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Profilstange\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"型材棒\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Profilstrebe\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"型材工作面\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Präzisionsprofile\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"精密型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Rastermaß\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Modular Dimensions\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Dimensions modulaires\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Misure modulari\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"光栅大小\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Strebe\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"斜撑组件\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Vierkant-Alu-Profile\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"方形铝型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Vierkantprofile\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"方形型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Vierkantrohre\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"方管\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Render\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"classes\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n          <span class=\"token string\">\"header\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token string\">\"details\"</span>\n        <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"title\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"alt\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"text\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Das Profil 8 40x40 leicht ist ein universelles Konstruktionsprofil aus hochwertig eloxiertem Aluminium im Rastermaß der Baureihe 8.&lt;br />Das gewichtsreduzierte Aluprofil in der item Ausführung leicht besitzt vier offene Profilnuten 8.\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Profile 8 40x40 light is a universal construction profile made of high-quality anodized aluminium in the modular dimension of Line 8.&lt;br />This weight-reduced aluminium profile in the light design variant from item features four open Line 8 profile grooves.\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Le profilé 8 40x40 léger est un profilé de construction universel en aluminium anodisé de qualité aux dimensions modulaires de la ligne 8.&lt;br />Ce profilé alu à poids réduit en version légère d’item dispose de quatre rainures 8 ouvertes.\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Il profilato 8 40x40 leggero è un profilato costruttivo universale in pregiato alluminio anodizzato nella misura modulare della serie 8.&lt;br />Nella versione leggera, il profilato in alluminio dal peso ridotto presenta quattro scanalature 8 aperte.\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Profil 8 40x40 lekki jest wszechstronnym profilem konstrukcyjnym wykonanym z wysokiej jakości anodowanego aluminium w wymiarze rastrowym serii 8.&lt;br />Profil aluminiowy o zredukowanej wadze w wersji lekkiej item ma cztery otwarte rowki profilowe 8.\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"El perfil 8 40x40 ligero es un perfil de construcción universal de aluminio anodizado de alta calidad en la dimensión modular de la serie 8.&lt;br />Este perfil de aluminio de peso reducido en la variante de diseño ligero de item cuenta con cuatro ranuras de perfil de la serie 8 abiertas.\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"sources\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2633_%23SALL_%23AINO_%23V1.jpg\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2633_%23SALL_%23AWEBP2000_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">500</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2633_%23SALL_%23AWEBP500_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">167</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2633_%23SALL_%23AWEBP250_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2633_%23SALL_%23AINO_%23V1.jpg\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2633_%23SALL_%23AWEBP2000_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">500</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2633_%23SALL_%23AWEBP500_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">167</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2633_%23SALL_%23AWEBP250_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2633_%23SALL_%23AINO_%23V1.jpg\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2633_%23SALL_%23AWEBP2000_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">500</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2633_%23SALL_%23AWEBP500_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">167</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2633_%23SALL_%23AWEBP250_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2633_%23SALL_%23AINO_%23V1.jpg\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2633_%23SALL_%23AWEBP2000_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">500</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2633_%23SALL_%23AWEBP500_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">167</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2633_%23SALL_%23AWEBP250_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2633_%23SALL_%23AINO_%23V1.jpg\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2633_%23SALL_%23AWEBP2000_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">500</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2633_%23SALL_%23AWEBP500_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">167</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2633_%23SALL_%23AWEBP250_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2633_%23SALL_%23AINO_%23V1.jpg\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2633_%23SALL_%23AWEBP2000_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">500</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2633_%23SALL_%23AWEBP500_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">167</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2633_%23SALL_%23AWEBP250_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2633_%23SALL_%23AINO_%23V1.jpg\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2633_%23SALL_%23AWEBP2000_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">500</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2633_%23SALL_%23AWEBP500_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">167</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2633_%23SALL_%23AWEBP250_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2633_%23SALL_%23AINO_%23V1.jpg\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2633_%23SALL_%23AWEBP2000_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">500</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2633_%23SALL_%23AWEBP500_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">167</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2633_%23SALL_%23AWEBP250_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span>\n        <span class=\"token punctuation\">}</span>\n      <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n      <span class=\"token punctuation\">{</span>\n        <span class=\"token property\">\"keywords\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item24\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item24\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item24\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item24\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item24\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item24\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item24\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item24\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ESD\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ESD\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ESD\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ESD\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ESD\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ESD\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"静电放电\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ESD\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Alu-Profile\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"铝型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Aluprofil\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"铝型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Aluprofile\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"铝型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Alustangen\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"铝棒\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Alustrebe\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"铝制工作面\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Grundelemente\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"基础元件\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item Profil\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item 型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Itemprofil\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item-profil\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Konstruktionsprofile\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Construction Profiles\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"结构型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Leichtes Stangenprofil\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"轻质杆状型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Leichtes Vierkantprofil\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"轻质方形型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Leichtprofil\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"轻质型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Nutenprofile\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"凹槽型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Profilrohr\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"型材管\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Profilrohr leicht eckig\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"略带棱角的型材管\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Profilstange\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"型材棒\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Profilstrebe\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"型材工作面\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Präzisionsprofile\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"精密型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Rastermaß\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Modular Dimensions\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Dimensions modulaires\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Misure modulari\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"光栅大小\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Schwerprofile\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"重型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Strebe\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"斜撑组件\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Vierkant-Alu-Profile\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"方形铝型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Vierkantprofile\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"方形型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Vierkantrohre\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"方管\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Render\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"classes\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n          <span class=\"token string\">\"header\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token string\">\"details\"</span>\n        <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"title\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"alt\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"text\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Profile der Baureihe 8 sind in den Ausführungen standard, leicht und Economy (E) erhältlich. Durch zusätzliche Aussparungen wiegt ein Profil 8 40x40 leicht rund 30 Prozent weniger als ein Profil 8 40x40 bei gleicher Länge. Ein Profil 8 40x40 E wiegt rund 45 Prozent weniger.&lt;br />Passend zur Belastung müssen die Flächenträgheitsmomente gegen Durchbiegung und die maximale Nutauszugskraft des gewählten Profils beachtet werden.\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"The profiles in Line 8 are available in standard, light and economy (E) design variants. Due to additional cavities, a Profile 8 40x40 light weighs around 30 percent less than a Profile 8 40x40 in the same length. A Profile 8 40x40 E weighs approximately 45 percent less.&lt;br />The area moments of inertia against profile deflection and the maximum groove load-bearing capacity of the selected profile must be given due consideration in respect of the loads involved.\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Les profilés de la ligne 8 sont disponibles dans les versions standard, léger et Economy (E). Grâce à des évidements supplémentaires, un profilé 8 40x40 léger pèse environ 30 % de moins qu’un profilé 8 40x40 de même longueur. Un profilé 8 40x40 E pèse environ 45 % de moins.&lt;br />En fonction de la charge, il faut tenir compte des moments quadratiques contre la flexion et de la force d&amp;#8217;extraction de rainure maximale du profilé retenu.\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"I profilati della serie 8 sono disponibili nelle versioni standard, leggera ed E (Economy). Grazie ad ulteriori accorgimenti, a parità di lunghezza, un profilato 8 40x40 leggero pesa circa il 30% in meno di un profilato 8 40x40. Un profilato 8 40x40 E pesa circa il 45% in meno.&lt;br />A seconda del carico è necessario rispettare i momenti di inerzia superficiale contro la flessione e la forza di estrazione massima della scanalatura del profilato selezionato.\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Profile serii 8 dostępne są w wersji standardowej, lekkiej i Economy (E). Dodatkowe wycięcia w profilu 8 40x40 lekkim sprawiają, że profil waży ok. 30 % mniej niż profil 8 40x40 o tej samej długości. Profil 8 40x40 E waży ok. 45 % mniej.&lt;br />W zależności od obciążenia należy pamiętać o momentach bezwładności powierzchni względem ugięcia oraz maksymalnej sile wyrywania rowka wybranego profilu.\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Los perfiles de la serie 8 están disponibles en las variantes de diseño estándar, ligero y económico (E). Debido a las cavidades adicionales, un perfil 8 40x40 ligero pesa alrededor de un 30 % menos que un perfil 8 40x40 de la misma longitud. Un perfil 8 40x40 E pesa aproximadamente un 45 % menos.&lt;br />Deben tenerse en cuenta los momentos de inercia de la superficie frente a la flexión del perfil y la capacidad de carga máxima de la ranura del perfil seleccionado en relación con las cargas implicadas.\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"sources\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2603-Bauarten_%23SALL_%23AINO_%23V1.jpg\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2603-Bauarten_%23SALL_%23AWEBP2000_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">500</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2603-Bauarten_%23SALL_%23AWEBP500_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">167</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2603-Bauarten_%23SALL_%23AWEBP250_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2603-Bauarten_%23SALL_%23AINO_%23V1.jpg\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2603-Bauarten_%23SALL_%23AWEBP2000_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">500</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2603-Bauarten_%23SALL_%23AWEBP500_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">167</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2603-Bauarten_%23SALL_%23AWEBP250_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2603-Bauarten_%23SALL_%23AINO_%23V1.jpg\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2603-Bauarten_%23SALL_%23AWEBP2000_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">500</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2603-Bauarten_%23SALL_%23AWEBP500_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">167</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2603-Bauarten_%23SALL_%23AWEBP250_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2603-Bauarten_%23SALL_%23AINO_%23V1.jpg\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2603-Bauarten_%23SALL_%23AWEBP2000_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">500</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2603-Bauarten_%23SALL_%23AWEBP500_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">167</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2603-Bauarten_%23SALL_%23AWEBP250_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2603-Bauarten_%23SALL_%23AINO_%23V1.jpg\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2603-Bauarten_%23SALL_%23AWEBP2000_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">500</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2603-Bauarten_%23SALL_%23AWEBP500_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">167</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2603-Bauarten_%23SALL_%23AWEBP250_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2603-Bauarten_%23SALL_%23AINO_%23V1.jpg\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2603-Bauarten_%23SALL_%23AWEBP2000_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">500</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2603-Bauarten_%23SALL_%23AWEBP500_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">167</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2603-Bauarten_%23SALL_%23AWEBP250_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2603-Bauarten_%23SALL_%23AINO_%23V1.jpg\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2603-Bauarten_%23SALL_%23AWEBP2000_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">500</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2603-Bauarten_%23SALL_%23AWEBP500_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">167</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2603-Bauarten_%23SALL_%23AWEBP250_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"jpg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2603-Bauarten_%23SALL_%23AINO_%23V1.jpg\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2603-Bauarten_%23SALL_%23AWEBP2000_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">500</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">333</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2603-Bauarten_%23SALL_%23AWEBP500_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"webp\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">250</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">167</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/PIC_ANW_PRD_PRF_2603-Bauarten_%23SALL_%23AWEBP250_%23V1.webp\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span>\n        <span class=\"token punctuation\">}</span>\n      <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n      <span class=\"token punctuation\">{</span>\n        <span class=\"token property\">\"keywords\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Teleskopschienen\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Teleskopauszug\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Auszugsschienen\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Teleskope\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Schubladen\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Schubladenschienen\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Überauszug\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Schwerlast\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ESD\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ESD\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ESD\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ESD\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ESD\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ESD\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"静电放电\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ESD\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Hilfselemente\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Auxiliary Elements\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Outillages et services\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Elementi ausiliari\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"辅助元件\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Nutöffner\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Alu-Profile\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"铝型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Aluminiumprofil\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Aluprofil\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"铝型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Aluprofile\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"铝型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Alustangen\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"铝棒\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Alustrebe\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"铝制工作面\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Balken\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"begehbar \"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Decke\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Grundelemente\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"基础元件\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item Profil\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item 型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Itemprofil\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item-profil\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Konstruktionsprofile\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Construction Profiles\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"结构型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Leichtes Stangenprofil\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"轻质杆状型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Leichtes Vierkantprofil\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"轻质方形型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Leichtprofil\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"轻质型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Leichtprofile\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"轻质型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Nutenprofile\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"凹槽型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Profilrohr\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"型材管\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Profilrohr leicht eckig\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"略带棱角的型材管\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Profilstange\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"型材棒\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Profilstrebe\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"型材工作面\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Präzisionsprofile\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"精密型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Rastermaß\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Modular Dimensions\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Dimensions modulaires\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Misure modulari\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"光栅大小\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Statik\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Strebe\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"斜撑组件\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Träger\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Vierkant-Alu-Profile\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"方形铝型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Vierkantprofile\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"方形型材\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Vierkantrohre\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"方管\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Neuheiten 2024\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2024\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2024\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2024\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2024\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2024\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2024\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2024\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2024\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Neuheiten\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"news\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"nouveauté\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"novità\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"New\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"New\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"新特征\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"New\"</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Grundelemente\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"基础元件\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"reinraumtauglich\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Reinraum\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"classes\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n          <span class=\"token string\">\"technical\"</span>\n        <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"title\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"zulässige Nutauszugskraft\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Permissible groove extraction force\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Force d’extraction de rainure admissible\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Forza di trazione F\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Dopuszczalna siła wyciągająca rowka\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Fuerza de extracción admisible de la ranura\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Přípustná síla vytažení drážky\"</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"alt\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"text\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"sources\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"svg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">102</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">157</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_FUN_PRD_PRF_Nutauszugskraft-Profil-8-leicht_%23SALL_%23AINO_%23V1.svg\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"svg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">102</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">157</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_FUN_PRD_PRF_Nutauszugskraft-Profil-8-leicht_%23SALL_%23AINO_%23V1.svg\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"svg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">102</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">157</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_FUN_PRD_PRF_Nutauszugskraft-Profil-8-leicht_%23SALL_%23AINO_%23V1.svg\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"svg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">102</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">157</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_FUN_PRD_PRF_Nutauszugskraft-Profil-8-leicht_%23SALL_%23AINO_%23V1.svg\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"svg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">102</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">157</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_FUN_PRD_PRF_Nutauszugskraft-Profil-8-leicht_%23SALL_%23AINO_%23V1.svg\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"svg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">102</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">157</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_FUN_PRD_PRF_Nutauszugskraft-Profil-8-leicht_%23SALL_%23AINO_%23V1.svg\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"svg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">102</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">157</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_FUN_PRD_PRF_Nutauszugskraft-Profil-8-leicht_%23SALL_%23AINO_%23V1.svg\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"svg\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">102</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">157</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_FUN_PRD_PRF_Nutauszugskraft-Profil-8-leicht_%23SALL_%23AINO_%23V1.svg\"</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span>\n        <span class=\"token punctuation\">}</span>\n      <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n      <span class=\"token punctuation\">{</span>\n        <span class=\"token property\">\"keywords\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Gesamtkatalog 8\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"MB8\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"MB8\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n          <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"classes\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"title\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"alt\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"text\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"sources\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span>\n        <span class=\"token punctuation\">}</span>\n      <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"videos\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"playlist\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"engineeringDrawing\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"keywords\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n        <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"uneloxiert\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Alu-Profile\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"铝型材\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Aluprofil\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"铝型材\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Aluprofile\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"铝型材\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Alustangen\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"铝棒\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Alustrebe\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"铝制工作面\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Grundelemente\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"基础元件\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item Profil\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item 型材\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Itemprofil\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"item-profil\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Konstruktionsprofile\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Construction Profiles\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"结构型材\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Leichtes Stangenprofil\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"轻质杆状型材\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Leichtes Vierkantprofil\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"轻质方形型材\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Leichtprofil\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"轻质型材\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Nut 8\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Nutenprofile\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"凹槽型材\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Profilrohr\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"型材管\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Profilrohr leicht eckig\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"略带棱角的型材管\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Profilstange\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"型材棒\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Profilstrebe\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"型材工作面\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Präzisionsprofile\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"精密型材\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Rastermaß\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Modular Dimensions\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Dimensions modulaires\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Misure modulari\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"光栅大小\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Strebe\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"斜撑组件\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Vierkant-Alu-Profile\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"方形铝型材\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Vierkantprofile\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"方形型材\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Vierkantrohre\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"方管\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Neuheiten 2023 I\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2023/ I\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2023/ I\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2023/ I\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2023/ I\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2023/ I\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2023/ I\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2023/ I\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2023/ I\"</span>\n        <span class=\"token punctuation\">}</span>\n      <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"title\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"alt\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"text\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"sources\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"svg\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">75</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">85</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PMA_PRF_02633-x_%23SALL_%23AINO_%23V1.svg\"</span>\n          <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"svg\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">75</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">85</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PMA_PRF_02633-x_%23SALL_%23AINO_%23V1.svg\"</span>\n          <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"svg\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">75</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">85</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PMA_PRF_02633-x_%23SALL_%23AINO_%23V1.svg\"</span>\n          <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"svg\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">75</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">85</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PMA_PRF_02633-x_%23SALL_%23AINO_%23V1.svg\"</span>\n          <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"svg\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">75</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">85</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PMA_PRF_02633-x_%23SALL_%23AINO_%23V1.svg\"</span>\n          <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"svg\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">75</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">85</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PMA_PRF_02633-x_%23SALL_%23AINO_%23V1.svg\"</span>\n          <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"svg\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">75</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">85</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PMA_PRF_02633-x_%23SALL_%23AINO_%23V1.svg\"</span>\n          <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n          <span class=\"token punctuation\">{</span>\n            <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"svg\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"width\"</span><span class=\"token operator\">:</span> <span class=\"token number\">75</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"height\"</span><span class=\"token operator\">:</span> <span class=\"token number\">85</span><span class=\"token punctuation\">,</span>\n            <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/GRA_PMA_PRF_02633-x_%23SALL_%23AINO_%23V1.svg\"</span>\n          <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">]</span>\n      <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"variants\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"productId\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"45280\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"relation\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"MASTER\"</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"productId\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"45281\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"relation\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"MASTER\"</span>\n    <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"relatedProducts\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token property\">\"implicit\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n      <span class=\"token string\">\"2630\"</span>\n    <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"assemblyElements\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"accessoires\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n      <span class=\"token string\">\"2601\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token string\">\"62716\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token string\">\"42709\"</span>\n    <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"tools\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"services\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"downloads\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"title\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Technische Daten zum Profil\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Technical documentation\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Spécifications\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Specifiche tecniche dei profilati \"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Dane techniczne\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Datos técnicos\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"技术文档\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Technická dokumentace\"</span>\n      <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"pdf\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/DOK_DATA_profil-tech-daten_%23SDE_%23AIN_%23V4.pdf\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/DOK_DATA_profil-tech-daten_%23SEN_%23AIN_%23V4.pdf\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/DOK_DATA_profil-tech-daten_%23SFR_%23AIN_%23V4.pdf\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/DOK_DATA_profil-tech-daten_%23SIT_%23AIN_%23V4.pdf\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/DOK_DATA_profil-tech-daten_%23SPL_%23AIN_%23V4.pdf\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/DOK_DATA_profil-tech-daten_%23SES_%23AIN_%23V4.pdf\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/DOK_DATA_profil-tech-daten_%23SZH_%23AIN_%23V4.pdf\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/DOK_DATA_profil-tech-daten_%23SCS_%23AIN_%23V4.pdf\"</span>\n      <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"title\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Chemische Beständigkeit Aluminium\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Chemical resistance of aluminium\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Résistance chimique de l’aluminium\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Resistenza chimica dell’alluminio\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Chemiczna odporność aluminium\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Chemical resistance of aluminium\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"铝的耐化性\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Chemická odolnost hliníku\"</span>\n      <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"pdf\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/DOK_DATA_Aluminium_%23SDE_%23AIN_%23V1.pdf\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/DOK_DATA_Aluminium_%23SEN_%23AIN_%23V1.pdf\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/DOK_DATA_Aluminium_%23SALL_%23AIN_%23V1.pdf\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/DOK_DATA_Aluminium_%23SALL_%23AIN_%23V1.pdf\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/DOK_DATA_Aluminium_%23SALL_%23AIN_%23V1.pdf\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/DOK_DATA_Aluminium_%23SALL_%23AIN_%23V1.pdf\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/DOK_DATA_Aluminium_%23SALL_%23AIN_%23V1.pdf\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/DOK_DATA_Aluminium_%23SALL_%23AIN_%23V1.pdf\"</span>\n      <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"title\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ESD Produkt Qualifikation\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ESD Product Qualification\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ESD Product Qualification\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ESD Product Qualification\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ESD Product Qualification\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ESD Product Qualification\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"防静电产品认证\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ESD kvalifikace produktů\"</span>\n      <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"pdf\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/DOK_ESD_2633_%23SDE_%23AIN_%23V1.pdf\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/DOK_ESD_2633_%23SEN_%23AIN_%23V1.pdf\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/DOK_ESD_2633_%23SALL_%23AIN_%23V1.pdf\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/DOK_ESD_2633_%23SALL_%23AIN_%23V1.pdf\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/DOK_ESD_2633_%23SALL_%23AIN_%23V1.pdf\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/DOK_ESD_2633_%23SALL_%23AIN_%23V1.pdf\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/DOK_ESD_2633_%23SALL_%23AIN_%23V1.pdf\"</span><span class=\"token punctuation\">,</span>\n        <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://cdn.item24.com/product-assets/DOK_ESD_2633_%23SALL_%23AIN_%23V1.pdf\"</span>\n      <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"applications\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"classifications\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"version\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"11.0\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"system\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"eCl@ss\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"code\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"23360101\"</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"version\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"8.0\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"system\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"eCl@ss\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"code\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"23360101\"</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"version\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"7.1\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"system\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"eCl@ss\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"code\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"23360101\"</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"version\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"6.0.1\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"system\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"eCl@ss\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"code\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"23360101\"</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"version\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"4.0\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"system\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"eCl@ss\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"code\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"35020106\"</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"version\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"7.0\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"system\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"UNSPSC\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"code\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"30102306\"</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"version\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"9.0\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"system\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"UNSPSC\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"code\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"30102306\"</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"version\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"4.1\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"system\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"eCl@ss\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"code\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"35020106\"</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"version\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"5.0\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"system\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"eCl@ss\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"code\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"35020190\"</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"version\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"5.1\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"system\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"eCl@ss\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"code\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"35020190\"</span>\n    <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"identicalPartsCount\"</span><span class=\"token operator\">:</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"orderUnits\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"CUT\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"productId\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2633\"</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"PIECE\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"productId\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"45280\"</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"PIECE\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"productId\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"45281\"</span>\n    <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"slug\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token property\">\"de\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"profil-8-40x40-leicht-natur-2633\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"en\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"profile-8-40x40-light-natural-2633\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"fr\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"profile-8-40x40-leger-naturel-2633\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"it\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"profilato-8-40x40-leggero-naturale-2633\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"pl\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"profil-8-40x40-lekki-kolor-naturalny-2633\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"es\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"perfil-8-40x40-l-natural-2633\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"zh\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"xing-cai-8-xi-lie-40x40-qing-xing-yang-hua-yin-bai-2633\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"cs\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"profil-8-40-x-40-l-prirodni-odstin-2633\"</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre>\n</details>\n<p>So based on that insight, I was able to write a script to extract the bits I care about below:</p>\n<pre class=\"language-python\"><code class=\"language-python\"><span class=\"token comment\">#!/usr/bin/env python3</span>\n<span class=\"token comment\"># Item API Basic Product Search</span>\n<span class=\"token keyword\">import</span> urllib<span class=\"token punctuation\">.</span>request <span class=\"token comment\"># Query API</span>\n<span class=\"token keyword\">import</span> json <span class=\"token comment\"># Parsing API response</span>\n<span class=\"token keyword\">import</span> os <span class=\"token comment\"># For cache support</span>\n\n<span class=\"token keyword\">def</span> <span class=\"token function\">get_url_content</span><span class=\"token punctuation\">(</span>url<span class=\"token punctuation\">:</span> <span class=\"token builtin\">str</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">-</span><span class=\"token operator\">></span> <span class=\"token builtin\">str</span><span class=\"token punctuation\">:</span>\n\t<span class=\"token triple-quoted-string string\">\"\"\"\n\tRetrieves the content of a given URL as a string.\n\n\tArgs:\n\t\turl (str): The URL to retrieve content from.\n\n\tReturns:\n\t\tstr: The content of the response.\n\t\"\"\"</span>\n\t<span class=\"token keyword\">try</span><span class=\"token punctuation\">:</span>\n\t\theaders <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n\t\t\t<span class=\"token string\">'User-Agent'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'Mozilla/5.0'</span>\n\t\t<span class=\"token punctuation\">}</span>\n\t\trequest <span class=\"token operator\">=</span> urllib<span class=\"token punctuation\">.</span>request<span class=\"token punctuation\">.</span>Request<span class=\"token punctuation\">(</span>url<span class=\"token punctuation\">,</span> headers<span class=\"token operator\">=</span>headers<span class=\"token punctuation\">)</span>\n\t\tresponse <span class=\"token operator\">=</span> urllib<span class=\"token punctuation\">.</span>request<span class=\"token punctuation\">.</span>urlopen<span class=\"token punctuation\">(</span>request<span class=\"token punctuation\">)</span>\n\t\t<span class=\"token keyword\">if</span> <span class=\"token keyword\">not</span> response<span class=\"token punctuation\">.</span>getcode<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token number\">200</span><span class=\"token punctuation\">:</span>\n\t\t\t<span class=\"token keyword\">raise</span> Exception<span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f\"Failed to retrieve content. Status code: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>response<span class=\"token punctuation\">.</span>getcode<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">}</span></span><span class=\"token string\">\"</span></span><span class=\"token punctuation\">)</span>\n\t\t<span class=\"token keyword\">return</span> response<span class=\"token punctuation\">.</span>read<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>decode<span class=\"token punctuation\">(</span><span class=\"token string\">'utf-8'</span><span class=\"token punctuation\">)</span>\n\t<span class=\"token keyword\">except</span> urllib<span class=\"token punctuation\">.</span>error<span class=\"token punctuation\">.</span>HTTPError <span class=\"token keyword\">as</span> e<span class=\"token punctuation\">:</span>\n\t\t<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f\"HTTP Error: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>e<span class=\"token punctuation\">}</span></span><span class=\"token string\">\"</span></span><span class=\"token punctuation\">)</span>\n\t\t<span class=\"token keyword\">return</span> <span class=\"token boolean\">None</span>\n\t<span class=\"token keyword\">except</span> Exception <span class=\"token keyword\">as</span> e<span class=\"token punctuation\">:</span>\n\t\t<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f\"An error occurred: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>e<span class=\"token punctuation\">}</span></span><span class=\"token string\">\"</span></span><span class=\"token punctuation\">)</span>\n\t\t<span class=\"token keyword\">return</span> <span class=\"token boolean\">None</span>\n\n<span class=\"token keyword\">def</span> <span class=\"token function\">get_url_json_api</span><span class=\"token punctuation\">(</span>url<span class=\"token punctuation\">:</span> <span class=\"token builtin\">str</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">-</span><span class=\"token operator\">></span> <span class=\"token builtin\">dict</span><span class=\"token punctuation\">:</span>\n\t<span class=\"token triple-quoted-string string\">\"\"\"\n\tRetrieves JSON content from a given URL.\n\n\tArgs:\n\t\turl (str): The URL to retrieve JSON content from.\n\n\tReturns:\n\t\tdict: The parsed JSON content.\n\t\"\"\"</span>\n\treceived_content <span class=\"token operator\">=</span> get_url_content<span class=\"token punctuation\">(</span>url<span class=\"token punctuation\">)</span>\n\t<span class=\"token keyword\">if</span> <span class=\"token keyword\">not</span> received_content<span class=\"token punctuation\">:</span>\n\t\t<span class=\"token keyword\">return</span> <span class=\"token boolean\">None</span>\n\t<span class=\"token keyword\">try</span><span class=\"token punctuation\">:</span>\n\t\t<span class=\"token keyword\">return</span> json<span class=\"token punctuation\">.</span>loads<span class=\"token punctuation\">(</span>received_content<span class=\"token punctuation\">)</span>\n\t<span class=\"token keyword\">except</span> json<span class=\"token punctuation\">.</span>JSONDecodeError <span class=\"token keyword\">as</span> e<span class=\"token punctuation\">:</span>\n\t\t<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f\"Failed to parse JSON. Error: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>e<span class=\"token punctuation\">}</span></span><span class=\"token string\">\"</span></span><span class=\"token punctuation\">)</span>\n\t\t<span class=\"token keyword\">return</span> <span class=\"token boolean\">None</span>\n\n<span class=\"token keyword\">def</span> <span class=\"token function\">get_item_product_data</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">id</span><span class=\"token punctuation\">:</span> <span class=\"token builtin\">str</span><span class=\"token punctuation\">,</span> cache_dir<span class=\"token punctuation\">:</span> <span class=\"token builtin\">str</span> <span class=\"token operator\">=</span> <span class=\"token boolean\">None</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">-</span><span class=\"token operator\">></span> <span class=\"token builtin\">dict</span><span class=\"token punctuation\">:</span>\n\t<span class=\"token comment\"># id input can accept \"0.0.448.04\" or \"0044804\" or \"44804\"</span>\n\t<span class=\"token comment\"># and convert to api id internal format of \"44804\"</span>\n\t<span class=\"token builtin\">id</span> <span class=\"token operator\">=</span> <span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">id</span><span class=\"token punctuation\">.</span>replace<span class=\"token punctuation\">(</span><span class=\"token string\">'.'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">''</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\tapi_id <span class=\"token operator\">=</span> <span class=\"token builtin\">str</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">id</span><span class=\"token punctuation\">)</span>\n\n\t<span class=\"token comment\"># If cache exists, load it</span>\n\t<span class=\"token keyword\">if</span> cache_dir<span class=\"token punctuation\">:</span>\n\t\tcache_file <span class=\"token operator\">=</span> os<span class=\"token punctuation\">.</span>path<span class=\"token punctuation\">.</span>join<span class=\"token punctuation\">(</span>cache_dir<span class=\"token punctuation\">,</span> <span class=\"token string-interpolation\"><span class=\"token string\">f\"</span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>api_id<span class=\"token punctuation\">}</span></span><span class=\"token string\">.json\"</span></span><span class=\"token punctuation\">)</span>\n\t\t<span class=\"token keyword\">if</span> os<span class=\"token punctuation\">.</span>path<span class=\"token punctuation\">.</span>exists<span class=\"token punctuation\">(</span>cache_file<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n\t\t\t<span class=\"token keyword\">with</span> <span class=\"token builtin\">open</span><span class=\"token punctuation\">(</span>cache_file<span class=\"token punctuation\">,</span> <span class=\"token string\">'r'</span><span class=\"token punctuation\">,</span> encoding<span class=\"token operator\">=</span><span class=\"token string\">'utf-8'</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">as</span> f<span class=\"token punctuation\">:</span>\n\t\t\t\t<span class=\"token keyword\">try</span><span class=\"token punctuation\">:</span>\n\t\t\t\t\tjson_content <span class=\"token operator\">=</span> json<span class=\"token punctuation\">.</span>load<span class=\"token punctuation\">(</span>f<span class=\"token punctuation\">)</span>\n\t\t\t\t\t<span class=\"token keyword\">if</span> json_content<span class=\"token punctuation\">.</span>get<span class=\"token punctuation\">(</span><span class=\"token string\">\"id\"</span><span class=\"token punctuation\">,</span> <span class=\"token boolean\">None</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> api_id<span class=\"token punctuation\">:</span>\n\t\t\t\t\t\t<span class=\"token keyword\">return</span> json_content\n\t\t\t\t<span class=\"token keyword\">except</span> json<span class=\"token punctuation\">.</span>JSONDecodeError<span class=\"token punctuation\">:</span>\n\t\t\t\t\t<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f\"Warning: Cache file </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>cache_file<span class=\"token punctuation\">}</span></span><span class=\"token string\"> is corrupted. Refetching...\"</span></span><span class=\"token punctuation\">)</span>\n\n\t<span class=\"token comment\"># Not cached. Fetch</span>\n\tapi_url <span class=\"token operator\">=</span> <span class=\"token string-interpolation\"><span class=\"token string\">f\"https://api.item24.com/product-data/products/</span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>api_id<span class=\"token punctuation\">}</span></span><span class=\"token string\">\"</span></span>\n\tjson_content <span class=\"token operator\">=</span> get_url_json_api<span class=\"token punctuation\">(</span>api_url<span class=\"token punctuation\">)</span>\n\n\t<span class=\"token comment\"># Save to cache</span>\n\t<span class=\"token keyword\">if</span> cache_dir<span class=\"token punctuation\">:</span>\n\t\t<span class=\"token keyword\">with</span> <span class=\"token builtin\">open</span><span class=\"token punctuation\">(</span>cache_file<span class=\"token punctuation\">,</span> <span class=\"token string\">'w'</span><span class=\"token punctuation\">,</span> encoding<span class=\"token operator\">=</span><span class=\"token string\">'utf-8'</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">as</span> f<span class=\"token punctuation\">:</span>\n\t\t\tjson<span class=\"token punctuation\">.</span>dump<span class=\"token punctuation\">(</span>json_content<span class=\"token punctuation\">,</span> f<span class=\"token punctuation\">,</span> indent<span class=\"token operator\">=</span><span class=\"token number\">2</span><span class=\"token punctuation\">)</span>\n\n\t<span class=\"token keyword\">return</span> json_content\n\n<span class=\"token comment\"># Call ITEM API for 0.0.026.33</span>\njson_content <span class=\"token operator\">=</span> get_item_product_data<span class=\"token punctuation\">(</span><span class=\"token string\">\"0.0.026.33\"</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\"># Print Interesting Data</span>\nrow <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span>\nrow<span class=\"token punctuation\">[</span><span class=\"token string\">\"Part Number\"</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> json_content<span class=\"token punctuation\">.</span>get<span class=\"token punctuation\">(</span><span class=\"token string\">\"formattedId\"</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">if</span> <span class=\"token string\">\"title\"</span> <span class=\"token keyword\">in</span> json_content <span class=\"token keyword\">and</span> <span class=\"token string\">\"en\"</span> <span class=\"token keyword\">in</span> json_content<span class=\"token punctuation\">[</span><span class=\"token string\">\"title\"</span><span class=\"token punctuation\">]</span> <span class=\"token punctuation\">:</span>\n\trow<span class=\"token punctuation\">[</span><span class=\"token string\">\"Title\"</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> json_content<span class=\"token punctuation\">[</span><span class=\"token string\">\"title\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token string\">\"en\"</span><span class=\"token punctuation\">]</span>\n<span class=\"token keyword\">if</span> <span class=\"token string\">\"texts\"</span> <span class=\"token keyword\">in</span> json_content <span class=\"token keyword\">and</span> <span class=\"token string\">\"descriptionShort\"</span> <span class=\"token keyword\">in</span> json_content<span class=\"token punctuation\">[</span><span class=\"token string\">\"texts\"</span><span class=\"token punctuation\">]</span> <span class=\"token keyword\">and</span> <span class=\"token string\">\"en\"</span> <span class=\"token keyword\">in</span> json_content<span class=\"token punctuation\">[</span><span class=\"token string\">\"texts\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token string\">\"descriptionShort\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">:</span>\n\trow<span class=\"token punctuation\">[</span><span class=\"token string\">\"Description\"</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> json_content<span class=\"token punctuation\">[</span><span class=\"token string\">\"texts\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token string\">\"descriptionShort\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token string\">\"en\"</span><span class=\"token punctuation\">]</span>\n<span class=\"token keyword\">if</span> <span class=\"token string\">\"slug\"</span> <span class=\"token keyword\">in</span> json_content <span class=\"token keyword\">and</span> <span class=\"token string\">\"en\"</span> <span class=\"token keyword\">in</span> json_content<span class=\"token punctuation\">[</span><span class=\"token string\">\"slug\"</span><span class=\"token punctuation\">]</span> <span class=\"token punctuation\">:</span>\n\trow<span class=\"token punctuation\">[</span><span class=\"token string\">\"Web Link\"</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token string\">\"https://www.item24.com/en-au/\"</span> <span class=\"token operator\">+</span> json_content<span class=\"token punctuation\">.</span>get<span class=\"token punctuation\">(</span><span class=\"token string\">\"slug\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>get<span class=\"token punctuation\">(</span><span class=\"token string\">\"en\"</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>json<span class=\"token punctuation\">.</span>dumps<span class=\"token punctuation\">(</span>row<span class=\"token punctuation\">,</span> indent<span class=\"token operator\">=</span><span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token triple-quoted-string string\">\"\"\"\nExpected Output:\n{\n  \"Part Number\": \"0.0.026.33\",\n  \"Title\": \"Profile 8 40x40 light, natural\",\n  \"Description\": \"item Profile 8 40x40 is suitable for all kinds of fastening options. ESD-safe and approved under Directive 2002/95/EC.\",\n  \"Web Link\": \"https://www.item24.com/en-au/profile-8-40x40-light-natural-2633\"\n}\n\"\"\"</span></code></pre>\n<p>Hope it helps! Just be mindful it may break in the future as this is likely an internal ITEM api feature only.</p>\n",
      "date_published": "2025-06-11T00:00:00Z"
    },
    {
      "id": "/blog/2025/05/05/hdd-thrasher-script-to-show-off-an-exposed-mechanical-hard-drive/",
      "url": "/blog/2025/05/05/hdd-thrasher-script-to-show-off-an-exposed-mechanical-hard-drive/",
      "title": "HDD Thrasher Script to show off an exposed Mechanical Hard Drive",
      "content_html":"<p>Found an old HDD that I would like to show activity for fun. Got a bash script that would help demonstrate the hard drive motion</p>\n<hr />\n<img src=\"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAC8gIykjHS8pJik1Mi84R3ZMR0FBR5BnbVV2q5azsKiWpaK81P/lvMj/y6Kl6//u////////tuL/////////////2wBDATI1NUc+R4pMTIr/wqXC////////////////////////////////////////////////////////////////////wAARCACPAKADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwBckn5ulQzlOg5amSzEcJyfWoA2GySaABuD1yKTlyAo/CpEzIcAcdyaezhBtj/OgBrII1xuy3cdhTMkck0E45NMOTQApbJyaN54GTxTaOKAJ458Ebjz6jrV2OcEfN09RWXxTkdkOVNAGwDmlqjDcjpnB9O1W0kDcdD6UAPooooAKKKKACiiigBaKKKAMhWAPWkWIuGYcKOhNNQgMCy5HpUjyF+OgHQUAMUkAjOBS9PrTScdOtIOaAJEUHk4+p6UjAE9c0UUANwKeEyKTvUqjigCEjHUUbQae3WnLHuHFAERjPY5p0c7Jw3IpWUqaacN1oAvRXGR13D9RVhWDDIOaxwSjcH8atQTFm9D1yKAL9FRpKDjdx79qkoAKKKKAFooooAyXj2qOOPWoyfTpSvKzgAngUiJuJ56DNACDp7U6kXpS0AFLSU1jigCQDP0FSAnHApo4AX06/WpIyuCWGfagCMgk1LF0pjEZ4GKd05FABJUJWpW570ygBm0kYoRH3YUHNWI1zRJmPkdKAI18yM8fMO4qxDcA8A8/wB01GJlPOOailKMcg4NAGkrhvr6U6syK5IwH59+9XY5gRnOR6igCaigEEZBpaAMMipbf75HqpphBU4IpYjtkB7UAIOlLSsNrsPQ0UAJTG60+kK5oAcD82fXmnioQccHpUit7j8aAJMc04gkZ9elCMM9VH4U6eRcfKSSepNAEROGB96fsyNwqInip7U702b9pU5+ooAdGOKJx+6NSsoDZX7p5GKhuDhAPU0AVSKSlNFACbc0KzRtlTg1JFGXbHbufSppdipjYMdvWgAhuQTydrfoauLJk4bg1lqgdsZxUkc7Rtsf5loAc6BhUDIUNXHQqfemEA8GgCrnLZPWlp0kRHIpgPY0ALRS0UAIy5FRkYqWkK5oAYDigtmkIxSUAPzU8B2yoex4NVhT1NAGkhcSmJ1+U9Kq3OfNI5wOBmtJ5UTjjOKpzMLk4BUEDjjnNAFI0DrSkYODwe9PSN2Iwpwe+KALAURRdR6k+tVXYu2e1W1jjOFbJx2zVWRPLcjnGeM+lADDUlvCZZOenemhCzBRyTV+KPYoRep6mgCYgMMGq8kRX3HrViloAokY61FJFnkVdkh7r+VVyCKAKnKnmnAipnQMKgZShoAdRioyfSnJuZgCcCgBSuajK4q6EXoB+lIIFMh64Hv3oAqBcn0+tK+0ABQc9yaufZo/7v61DcW5UblyR39qAJXLb9wB+YA/hihkYlSoOSeKuQxh4EyOAo60/MUS9Rn65oArSwKZwx246PkgcetNjGEHHIGDT3ZJGfHLEEcinIgCjjigCMlVXe46dOOapu7SPuOOas3qEIpycZ6UyCISY+Xp1PrQBJbRBF3t+FWkUgZP3j1pqLuOf4R09/epKAG0UUUALTHjD8jg0+igCm6FT6GmEBuCKvMocYNV5Iiv09aAKTxEcimAnIwcGrZ9DUUkQPI60AEWSSwc7/epFZoVyx3ZPIqBWMbcipmdJFAOf8KALEciSD5WH071JisxwUbrn0NWoLrosn/fVAFkkBcE8elIQrdB7ZFPAVvfvTwuOlAESIoH3fzqTFLjnpUF3LsXy1PzHrjsKAIJ3+0ShE+6O/r71YRNoEa8ev0pkEYjTJHNWEXaOep60AL0GBRS0lADaKKKAClpKWgAo6jB6UUUAQyw915HpVcgj6VepkkQfleDQBSZAwqFlKH2qyyFT6H0ppGf8KAIQQw5pCu05pWjIOVpFfPBoAu2cgZ2VM7cZAParLMyLnYT9SKoQN5UgYHg8GrUkmxVZW3nPT2oAgmuLhZR8wHcBelLDGZJDI/JPOacR58gbZtAGMe1T7f4B+P+FACoMnd2HSn0vsKSgAooooAZRRRQAtFJS0AFFFFABRRRQAjIHHPWq0sRU8/nVug4IwRkUAZ59D19ajkQYyeKuTQ45HSoSny+1AFUN6nj1rQs5I2wrEZ/nVJ4ccr0q1bRqqZIyx7+goAvuiRruAyT0pijaPfvSRkuoJ6dhTqACkpaKAEooooA/9k=\" width=\"574\" height=\"514\" />\n<p>A while ago, I found a an old laptop HDD and found a transparent sata to USB adapter.</p>\n<p>This would be a good demo for others to see what old tech was like before SSDs.</p>\n<p>But to best demo its motion to other people, I needed a bash script to rapidly read the hdd to show the arm of the HDD in motion.</p>\n<p>This bash script will rapidly read from random sections of the HDD.</p>\n<pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token shebang important\">#!/bin/bash</span>\n<span class=\"token builtin class-name\">set</span> <span class=\"token parameter variable\">-euo</span> pipefail\n\n<span class=\"token comment\"># ---- Configuration ----</span>\n<span class=\"token assign-left variable\">workdir</span><span class=\"token operator\">=</span><span class=\"token string\">\"thrashtest\"</span>\n<span class=\"token assign-left variable\">num_files</span><span class=\"token operator\">=</span><span class=\"token number\">60</span>   <span class=\"token comment\"># total files</span>\n<span class=\"token assign-left variable\">file_size</span><span class=\"token operator\">=</span><span class=\"token string\">\"1G\"</span> <span class=\"token comment\"># per-file size</span>\n<span class=\"token assign-left variable\">block_size</span><span class=\"token operator\">=</span><span class=\"token variable\"><span class=\"token variable\">$(</span><span class=\"token function\">stat</span> <span class=\"token parameter variable\">-f</span> <span class=\"token parameter variable\">--format</span><span class=\"token operator\">=</span><span class=\"token string\">\"%S\"</span> <span class=\"token builtin class-name\">.</span><span class=\"token variable\">)</span></span>\n\n<span class=\"token comment\"># calculate blocks per file</span>\n<span class=\"token assign-left variable\">file_bytes</span><span class=\"token operator\">=</span><span class=\"token variable\"><span class=\"token variable\">$(</span>numfmt <span class=\"token parameter variable\">--from</span><span class=\"token operator\">=</span>iec $file_size<span class=\"token variable\">)</span></span>\n<span class=\"token assign-left variable\">blocks_per_file</span><span class=\"token operator\">=</span><span class=\"token variable\"><span class=\"token variable\">$((</span> file_bytes <span class=\"token operator\">/</span> block_size <span class=\"token variable\">))</span></span>\n\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Creating <span class=\"token variable\">$num_files</span> × <span class=\"token variable\">$file_size</span> files in ./<span class=\"token variable\">$workdir</span>\"</span>\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Filesystem block size: <span class=\"token variable\">$block_size</span> bytes\"</span>\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"→ <span class=\"token variable\">$blocks_per_file</span> blocks per file\"</span>\n\n<span class=\"token function\">mkdir</span> <span class=\"token parameter variable\">-p</span> <span class=\"token string\">\"<span class=\"token variable\">$workdir</span>\"</span>\n<span class=\"token builtin class-name\">cd</span> <span class=\"token string\">\"<span class=\"token variable\">$workdir</span>\"</span>\n\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"creating <span class=\"token variable\">$workdir</span> (<span class=\"token variable\">$num_files</span> bigfiles)\"</span>\n<span class=\"token keyword\">for</span> <span class=\"token for-or-select variable\">i</span> <span class=\"token keyword\">in</span> <span class=\"token variable\"><span class=\"token variable\">$(</span><span class=\"token function\">seq</span> <span class=\"token number\">1</span> $num_files<span class=\"token variable\">)</span></span>\n<span class=\"token keyword\">do</span>\n    <span class=\"token assign-left variable\">fname</span><span class=\"token operator\">=</span><span class=\"token string\">\"file_<span class=\"token variable\">${i}</span>.bin\"</span>\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">[</span> <span class=\"token operator\">!</span> <span class=\"token parameter variable\">-f</span> <span class=\"token string\">\"<span class=\"token variable\">$fname</span>\"</span> <span class=\"token punctuation\">]</span>\n    <span class=\"token keyword\">then</span>\n        <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"writing <span class=\"token variable\">$fname</span>\"</span>\n        <span class=\"token function\">dd</span> <span class=\"token assign-left variable\">if</span><span class=\"token operator\">=</span>/dev/zero <span class=\"token assign-left variable\">of</span><span class=\"token operator\">=</span><span class=\"token string\">\"<span class=\"token variable\">$fname</span>\"</span> <span class=\"token assign-left variable\">bs</span><span class=\"token operator\">=</span><span class=\"token variable\">$block_size</span> <span class=\"token assign-left variable\">count</span><span class=\"token operator\">=</span><span class=\"token variable\">$blocks_per_file</span> <span class=\"token assign-left variable\">status</span><span class=\"token operator\">=</span>progress\n    <span class=\"token keyword\">fi</span>\n<span class=\"token keyword\">done</span>\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"finished creating <span class=\"token variable\">$workdir</span>\"</span>\n\n<span class=\"token comment\"># ---- Thrash loop (random read or write) ----</span>\n<span class=\"token keyword\">while</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">;</span> <span class=\"token keyword\">do</span>\n  <span class=\"token comment\"># pick a random file index and offset</span>\n  <span class=\"token assign-left variable\">idx</span><span class=\"token operator\">=</span><span class=\"token variable\"><span class=\"token variable\">$((</span> RANDOM <span class=\"token operator\">%</span> num_files <span class=\"token operator\">+</span> <span class=\"token number\">1</span> <span class=\"token variable\">))</span></span>\n  <span class=\"token assign-left variable\">offset</span><span class=\"token operator\">=</span><span class=\"token variable\"><span class=\"token variable\">$((</span> RANDOM <span class=\"token operator\">%</span> blocks_per_file <span class=\"token variable\">))</span></span>\n  <span class=\"token assign-left variable\">fname</span><span class=\"token operator\">=</span><span class=\"token string\">\"file_<span class=\"token variable\">${idx}</span>.bin\"</span>\n\n  <span class=\"token comment\"># Random Read</span>\n  <span class=\"token function\">dd</span> <span class=\"token assign-left variable\">if</span><span class=\"token operator\">=</span><span class=\"token string\">\"<span class=\"token variable\">$fname</span>\"</span> <span class=\"token assign-left variable\">of</span><span class=\"token operator\">=</span>/dev/null <span class=\"token assign-left variable\">bs</span><span class=\"token operator\">=</span><span class=\"token variable\">$block_size</span> <span class=\"token assign-left variable\">count</span><span class=\"token operator\">=</span><span class=\"token number\">1</span> <span class=\"token assign-left variable\">skip</span><span class=\"token operator\">=</span><span class=\"token variable\">$offset</span> <span class=\"token assign-left variable\">status</span><span class=\"token operator\">=</span>none\n<span class=\"token keyword\">done</span></code></pre>\n<p>You could replace the random read with below if you want to read and write as well.\nIt's slower and does't look that much different in practice so not really needed here,\nbut it might be of interest to you from an understanding perspective.</p>\n<pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token comment\"># choose action: 0 = read, 1 = write</span>\n<span class=\"token assign-left variable\">action</span><span class=\"token operator\">=</span><span class=\"token variable\"><span class=\"token variable\">$((</span> RANDOM <span class=\"token operator\">%</span> <span class=\"token number\">2</span> <span class=\"token variable\">))</span></span>\n<span class=\"token keyword\">if</span> <span class=\"token punctuation\">[</span> <span class=\"token string\">\"<span class=\"token variable\">$action</span>\"</span> <span class=\"token parameter variable\">-eq</span> <span class=\"token number\">0</span> <span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n  <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"[READ ] <span class=\"token variable\">$fname</span> @ block <span class=\"token variable\">$offset</span>\"</span>\n  <span class=\"token function\">dd</span> <span class=\"token assign-left variable\">if</span><span class=\"token operator\">=</span><span class=\"token string\">\"<span class=\"token variable\">$fname</span>\"</span> <span class=\"token assign-left variable\">of</span><span class=\"token operator\">=</span>/dev/null <span class=\"token assign-left variable\">bs</span><span class=\"token operator\">=</span><span class=\"token variable\">$block_size</span> <span class=\"token assign-left variable\">count</span><span class=\"token operator\">=</span><span class=\"token number\">1</span> <span class=\"token assign-left variable\">skip</span><span class=\"token operator\">=</span><span class=\"token variable\">$offset</span> <span class=\"token assign-left variable\">status</span><span class=\"token operator\">=</span>none\n<span class=\"token keyword\">else</span>\n  <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"[WRITE] <span class=\"token variable\">$fname</span> @ block <span class=\"token variable\">$offset</span>\"</span>\n  <span class=\"token function\">dd</span> <span class=\"token assign-left variable\">if</span><span class=\"token operator\">=</span>/dev/urandom <span class=\"token assign-left variable\">of</span><span class=\"token operator\">=</span><span class=\"token string\">\"<span class=\"token variable\">$fname</span>\"</span> <span class=\"token assign-left variable\">bs</span><span class=\"token operator\">=</span><span class=\"token variable\">$block_size</span> <span class=\"token assign-left variable\">count</span><span class=\"token operator\">=</span><span class=\"token number\">1</span> <span class=\"token assign-left variable\">seek</span><span class=\"token operator\">=</span><span class=\"token variable\">$offset</span> <span class=\"token assign-left variable\">conv</span><span class=\"token operator\">=</span>notrunc <span class=\"token assign-left variable\">status</span><span class=\"token operator\">=</span>none\n<span class=\"token keyword\">fi</span></code></pre>\n<p>After running it, do take note about how the arm moves around and think about how the HDD has to physically move\nthe arm to the right spot to read.</p>\n<p>This is why random access is super slow compared to SSD flash memories.</p>\n",
      "date_published": "2025-05-05T00:00:00Z"
    },
    {
      "id": "/blog/2025/03/26/brother-hl-4570cdw-paper-printer-toner-reset/",
      "url": "/blog/2025/03/26/brother-hl-4570cdw-paper-printer-toner-reset/",
      "title": "Brother HL-4570CDW Paper Printer Toner Reset",
      "content_html":"<p>Was trying to reset the toner of a Brother HL-4570CDW Paper Printer.\nHere's the step you can follow.</p>\n<hr />\n<ol>\n<li>Open the front cover of your <strong>Brother HL-4570CDW printer</strong> where you can access toner cartridges.</li>\n<li>Press the two buttons named <strong>Cancel</strong> and <strong>Secure</strong> on the printer panel simultaneously.</li>\n</ol>\n<ul>\n<li>You will see <code>K.TNR-STD</code> on the printer screen)</li>\n</ul>\n<ol start=\"3\">\n<li>Press the <code>+</code> or <code>-</code> to select the toner colour you want to reset.\n<ul>\n<li>You will see <code>&lt;COLOR&gt;.TNR-&lt;CAPACITY&gt;</code> options.\n<ul>\n<li>K=Black, C=Cyan, M=Magenta, Y=Yellow.</li>\n<li>STD=Standard, HC=High Capacity, S.HC=Super High Capacity</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>Repeat as needed. Close cover when done.</li>\n</ol>\n",
      "date_published": "2025-03-26T00:00:00Z"
    },
    {
      "id": "/blog/2025/03/11/blu-ray-hybrid-iso-image-archival-script/",
      "url": "/blog/2025/03/11/blu-ray-hybrid-iso-image-archival-script/",
      "title": "Blu‑ray Hybrid ISO Image Archival Script",
      "content_html":"<p>Was trying to streamline the process of producing archival Blu-Ray. Created a bash script that would create a hybrid ISO9660+UDF disc image using genisoimage and dvdisaster.</p>\n<hr />\n<p>Below is a script for <code>create-archive-iso.sh</code> that you can use to read a folder like:</p>\n<p><code>./2025-01-13_Projects_2020_-_2025/</code></p>\n<p>And generate a hybrid iso image like</p>\n<p><code>./2025-01-13_Projects_2020_-_2025.iso</code></p>\n<p>Where the disc volume title is <code>Projects 2020 - 2025</code> when this command is run:</p>\n<p><code>./create_iso.sh ./2025-01-13_Projects_2020_-_2025/</code></p>\n<p>In addition it will run <code>dvdisaster -i &quot;$DEST_IMAGE&quot; -mRS03 -o image -c</code> which\nwill enhance the iso with extra error correction to make the disc more resiliant\nagainst bitrot (If borked, you can still recover the image using dvdisaster).</p>\n<pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token shebang important\">#!/bin/bash</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\"># Blu‑ray Hybrid Disc Image Archival Script</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\"># Brian Khuu 2025</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\"># This script creates a hybrid ISO image that combines UDF with ISO9660 </span>\n<span class=\"token comment\"># (including Rock Ridge and Joliet extensions). It uses ISO‑level 3 to allow</span>\n<span class=\"token comment\"># files larger than 4GB, though note that ISO‑level 3 only removes the size </span>\n<span class=\"token comment\"># limit—not the filename/path length limits. Rock Ridge (-R) preserves full</span>\n<span class=\"token comment\"># POSIX attributes (and longer names up to 255 bytes), while Joliet (-J with </span>\n<span class=\"token comment\"># -joliet-long) creates a secondary directory tree for Windows compatibility.</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\"># It then augments the generated ISO with error correction data using dvdisaster.</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\"># Usage: ./create_iso.sh &lt;source_folder> [&lt;destination_iso_image>]</span>\n\n<span class=\"token comment\"># -----------------------------------------------------------</span>\n<span class=\"token comment\"># Step 1: Check for required dependencies</span>\n<span class=\"token comment\"># -----------------------------------------------------------</span>\n<span class=\"token keyword\">for</span> <span class=\"token for-or-select variable\">cmd</span> <span class=\"token keyword\">in</span> genisoimage dvdisaster<span class=\"token punctuation\">;</span> <span class=\"token keyword\">do</span>\n    <span class=\"token keyword\">if</span> <span class=\"token operator\">!</span> <span class=\"token builtin class-name\">command</span> <span class=\"token parameter variable\">-v</span> <span class=\"token string\">\"<span class=\"token variable\">$cmd</span>\"</span> <span class=\"token operator\">&amp;></span> /dev/null<span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n        <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Error: <span class=\"token variable\">$cmd</span> is not installed. Please install it.\"</span>\n        <span class=\"token builtin class-name\">exit</span> <span class=\"token number\">1</span>\n    <span class=\"token keyword\">fi</span>\n<span class=\"token keyword\">done</span>\n\n<span class=\"token comment\"># -----------------------------------------------------------</span>\n<span class=\"token comment\"># Step 2: Validate script arguments</span>\n<span class=\"token comment\"># -----------------------------------------------------------</span>\n<span class=\"token keyword\">if</span> <span class=\"token punctuation\">[</span> <span class=\"token string\">\"<span class=\"token variable\">$#</span>\"</span> <span class=\"token parameter variable\">-lt</span> <span class=\"token number\">1</span> <span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n    <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Got <span class=\"token variable\">$#</span> args\"</span>\n    <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Usage: <span class=\"token variable\">$0</span> &lt;source_folder> [&lt;destination_iso_image>]\"</span>\n    <span class=\"token builtin class-name\">exit</span> <span class=\"token number\">1</span>\n<span class=\"token keyword\">fi</span>\n\n<span class=\"token comment\"># -----------------------------------------------------------</span>\n<span class=\"token comment\"># Step 3: Derive Source Folder and Default Names</span>\n<span class=\"token comment\"># -----------------------------------------------------------</span>\n<span class=\"token assign-left variable\">SOURCE_FOLDER</span><span class=\"token operator\">=</span><span class=\"token string\">\"<span class=\"token variable\">$1</span>\"</span>\n\n<span class=\"token comment\"># Remove trailing slash (if any) and extract just the folder name</span>\n<span class=\"token assign-left variable\">DEFAULT_FOLDER_NAME</span><span class=\"token operator\">=</span><span class=\"token variable\">${SOURCE_FOLDER<span class=\"token operator\">%</span><span class=\"token operator\">/</span>}</span>\n<span class=\"token assign-left variable\">DEFAULT_FOLDER_NAME</span><span class=\"token operator\">=</span><span class=\"token variable\">${DEFAULT_FOLDER_NAME<span class=\"token operator\">##</span>*<span class=\"token operator\">/</span>}</span>\n\n<span class=\"token comment\"># Generate a default volume label based on the folder name.</span>\n<span class=\"token comment\"># The expected folder name format is something like:</span>\n<span class=\"token comment\">#   2025-01-13_Projects_2020_-_2025</span>\n<span class=\"token comment\"># The script strips off the date part and converts the remaining </span>\n<span class=\"token comment\"># text to a title-cased label (with spaces instead of underscores).</span>\n<span class=\"token comment\"># So the folder name example above would be interpreted as:</span>\n<span class=\"token comment\">#   Projects 2020 - 2025</span>\n<span class=\"token assign-left variable\">DEST_LABEL</span><span class=\"token operator\">=</span><span class=\"token variable\">${DEFAULT_FOLDER_NAME<span class=\"token operator\">#</span>*-*-*_}</span> <span class=\"token comment\">#&lt;&lt; Exclude date to better fit into ISO9660 volume label</span>\n<span class=\"token assign-left variable\">DEST_LABEL</span><span class=\"token operator\">=</span><span class=\"token variable\"><span class=\"token variable\">$(</span><span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"<span class=\"token variable\">$DEST_LABEL</span>\"</span> <span class=\"token operator\">|</span> <span class=\"token function\">sed</span> <span class=\"token string\">'s/[^_]\\+/\\L\\u&amp;/g'</span> <span class=\"token operator\">|</span> <span class=\"token function\">sed</span> <span class=\"token string\">'s/_/ /g'</span><span class=\"token variable\">)</span></span>\n\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"SOURCE_FOLDER = <span class=\"token variable\">$SOURCE_FOLDER</span>\"</span>\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"DEFAULT_FOLDER_NAME = <span class=\"token variable\">$DEFAULT_FOLDER_NAME</span>\"</span>\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"DEST_LABEL = <span class=\"token variable\">$DEST_LABEL</span>\"</span>\n\n<span class=\"token comment\"># ISO9660 has a 32-character limit for the volume label.</span>\n<span class=\"token assign-left variable\">MAX_VOLID_LEN</span><span class=\"token operator\">=</span><span class=\"token number\">32</span>\n<span class=\"token keyword\">if</span> <span class=\"token punctuation\">[</span> <span class=\"token variable\">${<span class=\"token operator\">#</span>DEST_LABEL}</span> <span class=\"token parameter variable\">-gt</span> <span class=\"token variable\">$MAX_VOLID_LEN</span> <span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n    <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Volume label is longer than <span class=\"token variable\">$MAX_VOLID_LEN</span> characters; '<span class=\"token variable\">$DEST_LABEL</span>'. Exiting...\"</span>\n    <span class=\"token builtin class-name\">exit</span> <span class=\"token number\">1</span>\n<span class=\"token keyword\">fi</span>\n\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Using volume label = <span class=\"token variable\">$DEST_LABEL</span>\"</span>\n\n<span class=\"token comment\"># Get the destination ISO image filename, defaulting to &lt;folder_name>.iso if not provided</span>\n<span class=\"token assign-left variable\">DEST_IMAGE</span><span class=\"token operator\">=</span><span class=\"token variable\">${2<span class=\"token operator\">:-</span>${DEFAULT_FOLDER_NAME}</span>.iso<span class=\"token punctuation\">}</span>\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"DEST_IMAGE = <span class=\"token variable\">$DEST_IMAGE</span>\"</span>\n\n<span class=\"token comment\"># -----------------------------------------------------------</span>\n<span class=\"token comment\"># Step 4: Create the Hybrid ISO Image using genisoimage</span>\n<span class=\"token comment\"># -----------------------------------------------------------</span>\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Creating hybrid ISO image...\"</span>\n\n<span class=\"token comment\"># Breakdown of key options:</span>\n<span class=\"token comment\">#   -udf                  : Include UDF support (useful for DVD/BD formats)</span>\n<span class=\"token comment\">#   -R                    : Enable Rock Ridge extensions for POSIX attributes and long filenames (up to 255 bytes)</span>\n<span class=\"token comment\">#   -J -joliet-long       : Create an additional Joliet tree for Windows with extended filename support (up to 64/103 characters)</span>\n<span class=\"token comment\">#   -allow-lowercase      : Retain lowercase letters in filenames</span>\n<span class=\"token comment\">#   -allow-multidot       : Allow filenames with multiple dots</span>\n<span class=\"token comment\">#   -allow-limited-size   : Prevent issues with files larger than 4GB in hybrid ISO/UDF images.</span>\n<span class=\"token comment\">#   -iso-level 3          : Use ISO9660 level 3 to remove the 4GB file size limit</span>\n<span class=\"token comment\">#   -V \"$DEST_LABEL\"      : Set the volume label (must be 32 characters or less)</span>\n<span class=\"token comment\">#   -o \"$DEST_IMAGE\"      : Specify the output file for the ISO image</span>\n<span class=\"token comment\">#   \"$SOURCE_FOLDER\"      : Source directory to be included in the ISO image</span>\ngenisoimage <span class=\"token parameter variable\">-udf</span> <span class=\"token parameter variable\">-R</span> <span class=\"token parameter variable\">-J</span> -joliet-long -allow-lowercase -allow-multidot -allow-limited-size -iso-level <span class=\"token number\">3</span> <span class=\"token parameter variable\">-V</span> <span class=\"token string\">\"<span class=\"token variable\">$DEST_LABEL</span>\"</span> <span class=\"token parameter variable\">-o</span> <span class=\"token string\">\"<span class=\"token variable\">$DEST_IMAGE</span>\"</span> <span class=\"token string\">\"<span class=\"token variable\">$SOURCE_FOLDER</span>\"</span>\n<span class=\"token keyword\">if</span> <span class=\"token punctuation\">[</span> <span class=\"token variable\">$?</span> <span class=\"token parameter variable\">-ne</span> <span class=\"token number\">0</span> <span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n    <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Error: Failed to create ISO image with genisoimage.\"</span>\n    <span class=\"token builtin class-name\">exit</span> <span class=\"token number\">1</span>\n<span class=\"token keyword\">fi</span>\n\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"ISO image created at <span class=\"token variable\">$DEST_IMAGE</span>\"</span>\n\n<span class=\"token comment\"># -----------------------------------------------------------</span>\n<span class=\"token comment\"># Step 5: Enhance the ISO Image with Error Correction using dvdisaster</span>\n<span class=\"token comment\"># -----------------------------------------------------------</span>\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Enhancing image with error correction using dvdisaster...\"</span>\n\n<span class=\"token comment\"># Breakdown of dvdisaster options:</span>\n<span class=\"token comment\">#   -i \"$DEST_IMAGE\"   : Specify the input ISO image</span>\n<span class=\"token comment\">#   -mRS03             : Use error correction method RS03 (suitable for larger images)</span>\n<span class=\"token comment\">#   -o image           : Specify that the output should be an augmented image (i.e. the ECC data is added to the ISO)</span>\n<span class=\"token comment\">#   -c                 : Create ECC (error correction) information</span>\ndvdisaster <span class=\"token parameter variable\">-i</span> <span class=\"token string\">\"<span class=\"token variable\">$DEST_IMAGE</span>\"</span> <span class=\"token parameter variable\">-mRS03</span> <span class=\"token parameter variable\">-o</span> image <span class=\"token parameter variable\">-c</span>\n<span class=\"token keyword\">if</span> <span class=\"token punctuation\">[</span> <span class=\"token variable\">$?</span> <span class=\"token parameter variable\">-ne</span> <span class=\"token number\">0</span> <span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n    <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Warning: Failed to add error correction.\"</span>\n<span class=\"token keyword\">else</span>\n    <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Protected ISO image created successfully.\"</span>\n<span class=\"token keyword\">fi</span>\n\n<span class=\"token builtin class-name\">exit</span> <span class=\"token number\">0</span></code></pre>\n<h2>Faulty Script For Creating A Pure UDF Disc Image</h2>\n<p>Initially I was aiming to create a script that would create a pure UDF iso (So can burn 4gb+ video etc...) to a bluray disc with extra protection via mkudffs  and dvdisaster... however upon mounting Got 'wrong fs type, bad option, bad superblock on /dev/loop1, missing codepage or helper program, or other error.' mount error.</p>\n<p>I suspect it failed because of linux kernel impocompatibility with mounting v2.60 UDF image as read/write (The kernel module only supports ready only for v2.50 and v2.60).</p>\n<p>If you got suggestions on making this work or how the kernel module can be patched/developed to enable read/write... or a method to master a v2.50 and v2.60 UDF image, do get in touch with me! In the meantime, this is what I got at least...</p>\n<pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token shebang important\">#!/bin/bash</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\"># Blu‑ray Archival Script</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\"># Warning: Not working... got 'wrong fs type, bad option, bad superblock on /dev/loop1, missing codepage or helper program, or other error.' mount error</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\"># This script creates a blank UDF image sized for Blu‑ray media,</span>\n<span class=\"token comment\"># formats it using mkudffs, and optionally mounts it for copying files.</span>\n<span class=\"token comment\"># It is intended for archival to Blu‑ray only.</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\"># Usage: ./create_bluray_udf.sh &lt;source_folder> [&lt;image_name>]</span>\n\n<span class=\"token comment\"># Check for required dependencies</span>\n<span class=\"token keyword\">for</span> <span class=\"token for-or-select variable\">cmd</span> <span class=\"token keyword\">in</span> mkudffs dvdisaster <span class=\"token function\">sudo</span> <span class=\"token function\">dd</span> truncate<span class=\"token punctuation\">;</span> <span class=\"token keyword\">do</span>\n    <span class=\"token keyword\">if</span> <span class=\"token operator\">!</span> <span class=\"token builtin class-name\">command</span> <span class=\"token parameter variable\">-v</span> <span class=\"token string\">\"<span class=\"token variable\">$cmd</span>\"</span> <span class=\"token operator\">&amp;></span> /dev/null<span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n        <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Error: <span class=\"token variable\">$cmd</span> is not installed. Please install it.\"</span>\n        <span class=\"token builtin class-name\">exit</span> <span class=\"token number\">1</span>\n    <span class=\"token keyword\">fi</span>\n<span class=\"token keyword\">done</span>\n\n<span class=\"token comment\"># Check for correct number of arguments</span>\n<span class=\"token keyword\">if</span> <span class=\"token punctuation\">[</span> <span class=\"token string\">\"<span class=\"token variable\">$#</span>\"</span> <span class=\"token parameter variable\">-lt</span> <span class=\"token number\">1</span> <span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n    <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Got <span class=\"token variable\">$#</span> args\"</span>\n    <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Usage: <span class=\"token variable\">$0</span> &lt;source_folder> [&lt;image_name>]\"</span>\n    <span class=\"token builtin class-name\">exit</span> <span class=\"token number\">1</span>\n<span class=\"token keyword\">fi</span>\n\n<span class=\"token comment\"># Get Source Folder</span>\n<span class=\"token assign-left variable\">SOURCE_FOLDER</span><span class=\"token operator\">=</span><span class=\"token string\">\"<span class=\"token variable\">$1</span>\"</span>\n\n<span class=\"token comment\"># Derive default folder name from the source folder</span>\n<span class=\"token assign-left variable\">DEFAULT_FOLDER_NAME</span><span class=\"token operator\">=</span><span class=\"token variable\">${SOURCE_FOLDER<span class=\"token operator\">%</span><span class=\"token operator\">/</span>}</span>\n<span class=\"token assign-left variable\">DEFAULT_FOLDER_NAME</span><span class=\"token operator\">=</span><span class=\"token variable\">${DEFAULT_FOLDER_NAME<span class=\"token operator\">##</span>*<span class=\"token operator\">/</span>}</span>\n\n<span class=\"token comment\"># Generate a default disc title from the folder name</span>\n<span class=\"token assign-left variable\">DEST_TITLE</span><span class=\"token operator\">=</span><span class=\"token variable\"><span class=\"token variable\">$(</span><span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"<span class=\"token variable\">$DEFAULT_FOLDER_NAME</span>\"</span> <span class=\"token operator\">|</span> <span class=\"token function\">sed</span> <span class=\"token string\">'s/[^_]\\+/\\L\\u&amp;/g'</span> <span class=\"token operator\">|</span> <span class=\"token function\">sed</span> <span class=\"token string\">'s/_/ /g'</span><span class=\"token variable\">)</span></span>\n\n<span class=\"token comment\"># Get destination image; if not specified, default to &lt;foldername>.udf</span>\n<span class=\"token assign-left variable\">DEST_IMAGE</span><span class=\"token operator\">=</span><span class=\"token variable\">${2<span class=\"token operator\">:-</span>${DEFAULT_FOLDER_NAME}</span>.udf<span class=\"token punctuation\">}</span>\n\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"SOURCE_FOLDER       = <span class=\"token variable\">$SOURCE_FOLDER</span>\"</span>\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"DEFAULT_FOLDER_NAME = <span class=\"token variable\">$DEFAULT_FOLDER_NAME</span>\"</span>\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"DEST_TITLE          = <span class=\"token variable\">$DEST_TITLE</span>\"</span>\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"DEST_IMAGE          = <span class=\"token variable\">$DEST_IMAGE</span>\"</span>\n\n<span class=\"token comment\"># mkudffs settings for Blu‑ray</span>\n<span class=\"token assign-left variable\">MEDIA_TYPE</span><span class=\"token operator\">=</span>bdr    <span class=\"token comment\"># bdr – BD-R (Blu-ray Disc Recordable)</span>\n<span class=\"token assign-left variable\">UDF_REV</span><span class=\"token operator\">=</span><span class=\"token number\">2.60</span>      <span class=\"token comment\"># Use highest supported UDF version (Blu-ray requires UDF 2.50+)</span>\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"MEDIA_TYPE          = <span class=\"token variable\">$MEDIA_TYPE</span>\"</span>\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"UDF_REV             = <span class=\"token variable\">$UDF_REV</span>\"</span>\n\n<span class=\"token comment\"># Calculate the size needed (in bytes) for the source folder and add 10% overhead</span>\n<span class=\"token assign-left variable\">RAW_SIZE</span><span class=\"token operator\">=</span><span class=\"token variable\"><span class=\"token variable\">$(</span><span class=\"token function\">du</span> <span class=\"token parameter variable\">-sb</span> <span class=\"token string\">\"<span class=\"token variable\">$SOURCE_FOLDER</span>\"</span> <span class=\"token operator\">|</span> <span class=\"token function\">cut</span> <span class=\"token parameter variable\">-f1</span><span class=\"token variable\">)</span></span>\n<span class=\"token assign-left variable\">OVERHEAD</span><span class=\"token operator\">=</span><span class=\"token variable\"><span class=\"token variable\">$(</span><span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"<span class=\"token variable\">$RAW_SIZE</span> * 0.10\"</span> <span class=\"token operator\">|</span> <span class=\"token function\">bc</span> <span class=\"token parameter variable\">-l</span> <span class=\"token operator\">|</span> <span class=\"token function\">cut</span> -d. <span class=\"token parameter variable\">-f1</span><span class=\"token variable\">)</span></span>\n<span class=\"token assign-left variable\">TOTAL_SIZE</span><span class=\"token operator\">=</span><span class=\"token variable\"><span class=\"token variable\">$(</span><span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"<span class=\"token variable\">$RAW_SIZE</span> + <span class=\"token variable\">$OVERHEAD</span>\"</span> <span class=\"token operator\">|</span> <span class=\"token function\">bc</span><span class=\"token variable\">)</span></span>\n\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Source folder size: <span class=\"token variable\">$RAW_SIZE</span> bytes\"</span>\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Caculate 10% UDF metadata overhead: <span class=\"token variable\">$OVERHEAD</span> bytes\"</span>\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Allocating image size (with overhead): <span class=\"token variable\">$TOTAL_SIZE</span> bytes\"</span>\n\n<span class=\"token comment\"># Create a blank file of the calculated size</span>\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Creating blank image file...\"</span>\ntruncate <span class=\"token parameter variable\">-s</span> <span class=\"token string\">\"<span class=\"token variable\">$TOTAL_SIZE</span>\"</span> <span class=\"token string\">\"<span class=\"token variable\">$DEST_IMAGE</span>\"</span>\n<span class=\"token keyword\">if</span> <span class=\"token punctuation\">[</span> <span class=\"token variable\">$?</span> <span class=\"token parameter variable\">-ne</span> <span class=\"token number\">0</span> <span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n    <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Error: Failed to create blank image file.\"</span>\n    <span class=\"token builtin class-name\">exit</span> <span class=\"token number\">1</span>\n<span class=\"token keyword\">fi</span>\n\n<span class=\"token comment\"># Format the blank image as a UDF filesystem using mkudffs</span>\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Formatting image as UDF...\"</span>\nmkudffs --media-type<span class=\"token operator\">=</span><span class=\"token variable\">$MEDIA_TYPE</span> <span class=\"token parameter variable\">--udfrev</span><span class=\"token operator\">=</span><span class=\"token variable\">$UDF_REV</span> <span class=\"token parameter variable\">--label</span><span class=\"token operator\">=</span><span class=\"token string\">\"<span class=\"token variable\">$DEST_TITLE</span>\"</span> <span class=\"token string\">\"<span class=\"token variable\">$DEST_IMAGE</span>\"</span>\n<span class=\"token keyword\">if</span> <span class=\"token punctuation\">[</span> <span class=\"token variable\">$?</span> <span class=\"token parameter variable\">-ne</span> <span class=\"token number\">0</span> <span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n    <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Error: Failed to format the image with mkudffs.\"</span>\n    <span class=\"token builtin class-name\">exit</span> <span class=\"token number\">1</span>\n<span class=\"token keyword\">fi</span>\n\n<span class=\"token comment\"># Create a temporary mount point and mount the image</span>\n<span class=\"token assign-left variable\">MOUNT_POINT</span><span class=\"token operator\">=</span><span class=\"token variable\"><span class=\"token variable\">$(</span>mktemp <span class=\"token parameter variable\">-d</span><span class=\"token variable\">)</span></span> \n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Mounting image at <span class=\"token variable\">$MOUNT_POINT</span>...\"</span>\n<span class=\"token function\">sudo</span> <span class=\"token function\">mount</span> <span class=\"token parameter variable\">-t</span> udf <span class=\"token parameter variable\">-o</span> loop,rw <span class=\"token string\">\"<span class=\"token variable\">$DEST_IMAGE</span>\"</span> <span class=\"token string\">\"<span class=\"token variable\">$MOUNT_POINT</span>\"</span>\n<span class=\"token keyword\">if</span> <span class=\"token punctuation\">[</span> <span class=\"token variable\">$?</span> <span class=\"token parameter variable\">-ne</span> <span class=\"token number\">0</span> <span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n    <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Error: Failed to mount the image.\"</span>\n    <span class=\"token function\">rmdir</span> <span class=\"token string\">\"<span class=\"token variable\">$MOUNT_POINT</span>\"</span>\n    <span class=\"token function\">rm</span> <span class=\"token string\">\"<span class=\"token variable\">$DEST_IMAGE</span>\"</span>\n    <span class=\"token builtin class-name\">exit</span> <span class=\"token number\">1</span>\n<span class=\"token keyword\">fi</span>\n\n<span class=\"token comment\"># Copy the source files into the mounted image</span>\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Copying files from <span class=\"token variable\">$SOURCE_FOLDER</span> to the UDF image...\"</span>\n<span class=\"token function\">sudo</span> <span class=\"token function\">cp</span> <span class=\"token parameter variable\">-a</span> <span class=\"token string\">\"<span class=\"token variable\">$SOURCE_FOLDER</span>\"</span>/. <span class=\"token string\">\"<span class=\"token variable\">$MOUNT_POINT</span>\"</span>\n<span class=\"token keyword\">if</span> <span class=\"token punctuation\">[</span> <span class=\"token variable\">$?</span> <span class=\"token parameter variable\">-ne</span> <span class=\"token number\">0</span> <span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n    <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Error: Failed to copy files.\"</span>\n    <span class=\"token function\">sudo</span> <span class=\"token function\">umount</span> <span class=\"token string\">\"<span class=\"token variable\">$MOUNT_POINT</span>\"</span>\n    <span class=\"token function\">rmdir</span> <span class=\"token string\">\"<span class=\"token variable\">$MOUNT_POINT</span>\"</span>\n    <span class=\"token builtin class-name\">exit</span> <span class=\"token number\">1</span>\n<span class=\"token keyword\">fi</span>\n\n<span class=\"token function\">sync</span> <span class=\"token operator\">||</span> <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Warning: sync command failed\"</span>\n\n<span class=\"token comment\"># Unmount the image and clean up the temporary mount point</span>\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Unmounting image...\"</span>\n<span class=\"token function\">sudo</span> <span class=\"token function\">umount</span> <span class=\"token string\">\"<span class=\"token variable\">$MOUNT_POINT</span>\"</span>\n<span class=\"token function\">rmdir</span> <span class=\"token string\">\"<span class=\"token variable\">$MOUNT_POINT</span>\"</span>\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"UDF image created at <span class=\"token variable\">$DEST_IMAGE</span>\"</span>\n\n<span class=\"token comment\"># Optional: Enhance the image with error correction using dvdisaster</span>\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Enhancing image with error correction using dvdisaster...\"</span>\ndvdisaster <span class=\"token parameter variable\">-i</span> <span class=\"token string\">\"<span class=\"token variable\">$DEST_IMAGE</span>\"</span> <span class=\"token parameter variable\">-mRS02</span> <span class=\"token parameter variable\">-n</span> <span class=\"token number\">15</span>% <span class=\"token parameter variable\">-o</span> image\n<span class=\"token keyword\">if</span> <span class=\"token punctuation\">[</span> <span class=\"token variable\">$?</span> <span class=\"token parameter variable\">-ne</span> <span class=\"token number\">0</span> <span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n    <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Warning: Failed to add error correction.\"</span>\n<span class=\"token keyword\">else</span>\n    <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Protected image created successfully.\"</span>\n<span class=\"token keyword\">fi</span>\n\n<span class=\"token builtin class-name\">exit</span> <span class=\"token number\">0</span></code></pre>\n<p>A good comment about this problem is made by <a href=\"https://www.reddit.com/r/DataHoarder/comments/1j7y6lx/comment/mh5u9uv/\">dlarge6510</a>.\nBelow is encoded as ROT13 so you are encouraged to read his original comment unless reddit takes it down somehow due to bitrot etc...</p>\n<pre class=\"language-rot13\"><code class=\"language-rot13\">HQS vf n \"qhzcfgre sver\" ba nyy gur znva bcrengvat flfgrzf.\n\nV bayl guvax vg jbexf cebcreyl ba SerrOFQ.\n\nBa jvaqbjf lbh pna'g rira sbezng n qvfp nf HQS ivn gur THV, lbh unir gb hfr gur pbzznaq yvar. Vg pna nyfb bayl or hfrq ba UQQ vs lbh cnegvgvba gur UQQ va n fcrpvsvp jnl. Jura qbvat fb, ZnpBF jvyy abg or noyr gb ernq vg.\n\nBa ZnpBF ntnva, HQS vf s*pxrq hc. Gb hfr vg ba n UQQ be synfu qevir lbh unir gb cnegvgvba gur qevir va n jnl gung znxrf vg ol qrsnhyg nyzbfg hahfnoyr ba jvaqbjf.\n\nN svyrflfgrz qrfvtarq gb nyybj vagrepunatr bs svyrf orgjrra gur znva BF pbzcrgvgbef raqf hc hanoyr gb npghnyyl qb gung. Uzz, V jbaqre jul\n\nUbjrire, Yvahk orvat gur fhcrevbe BF vg vf ertneqvat svyrflfgrzf naq cnegvgvbavat pna ernq HQS jvgu cnegvgvbaf be ab cnegvgvbaf.\n\nVs lbh Tbbtyr nebhaq lbh'yy svaq n cebwrpg ba TvgUho jurer fbzrbar jebgr n fpevcg sbe nyy guerr BF' gung jvyy sbezng n synfu qevir va n jnl gung nyy 3 BF' jvyy npghnyyl or noyr gb hfr.\n\nNabgure jnl gung HQS unf yvgrenyyl orra fynzzrq ntnvafg gur jnyy vf vg vf bayl cbffvoyr gb ercnve n HQS svyrflfgrz ba... Jvaqbjf. Arvgure Yvahk abe ZnpBF unf na sfpx.\n\nHQS nf n svyrflfgrz jnf nonaqbarq ba Jvaqbjf, Yvahk naq ZnpBF. Jvaqbjf naq ZnpBF obgu ungrq vg nf vg nyybjrq vagrepunatr bs svyrf orgjrra gurzfryirf. V zrna, ubj qner fhpu n svyrflfgrz rkvfg! Lbh arrq gb nonaqba Zvpebfbsg naq orpbzr n Znp hfre!\n\nAbobql jnagrq gb unir HQS or gur havirefny svyrflfgrz. Vg jnf orsber vg'f gvzr. Bayl ba bcgvpny zrqvn qvq vg znantr gb npuvrir nal fbeg bs npprcgnapr.\n\nBa Yvahk, HQS unf orra nonaqbarq fvzcyl orpnhfr fbzr fbq arrq gb fgrc hc naq nqq jevgr fhccbeg gb gur xreary qeviref (be znxr n SHFR qevire). Ubjrire, nf HQS vf rssrpgviryl n qrnq svyrflfgrz gung'f bayl hfrq ba bcgvpny zrqvn vg frrzf crbcyr gung pna qb fhpu n guvat fvzcyl ner abg obgurevat.\n\nV zrna, jr nyy unir urneq gur \"jub gur s*PX hfrf bcgvpny zrqvn gurfr qnlf\"? Unira'g jr.\n\nHQS unf orra eryrtngrq gb n svyrflfgrz hfr ba OQ zrqvn gb ubyq UQ zbivrf. Gung'f vg'f ubzr va 2025 naq nf n gval unaqshy bs crbcyr npebff gur cynarg jnag gb znxr ubzrznqr UQ zbivr qvfpf gurer fvzcyl vf abobql vagrerfgrq va yrggvat nalbar qb gung ba Yvahk. Gehfg zr, V ybbxrq ng guvf 10 lrnef ntb. Nyy nal BF unf gb qb, juvpu Yvahk qbrf, vf gb cebivqr ernq bayl fhccbeg sbe nyy HQS irefvbaf.\n\nVs rabhtu crbcyr jnag jevgr fhccbeg sbe HQS 2.6 gura, jurer vf gur obhagl? Jurer vf gur Xvpxfgnegre? Nabgure BF V ybir; Evfp BF Bcra, unf arj qrirybczrag qbar ol hfref sebagvat hc gur pnfu gb uver n qrirybcre gb npghnyyl jevgr gur pbqr rgp.\n\nOhg abobql frrzf gb rira jnag gb tb gung sbe HQS. Gur pbqr nyernql rkvfgf va SerrOFQ naq pna rnfvyl or cbegrq.\n\nOnfvpnyyl zngr, nf zhpu nf jr nyy jnag gb unir HQS, nf zhpu nf jr ernq nobhg gur cebzvfrf vg bssrerq gb n jbeyq bs vagragvbany vapbzcngvoyl, n jbeyq gung jnf nyernql hfvat Sng32 naq AGSF qeviref vyyrtnyyl, n jbeyq gung nonaqbarq bcgvpny zrqvn naq npprcgrq nyy gur pehq gung pnzr jvgu zbivat svyrf orgjrra flfgrzf jvgu Sng32 naq vg fvmr yvzvgf rgp fvzcyl orpnhfr gurl jnagrq gb hfr n synfu qevir.\n\nPhr gur ivbyva 🎻 HQS vf ynlvat va n qvgpu, nonaqbarq nsgre orvat orng hc ol gur gjb znva ohyyvrf. Ur jnagrq gb svanyyl oevat crbcyr gbtrgure ohg gur ohyyvrf ehyrq gur cynltebhaq naq onpx gura gurl jnagrq gb fgnzc gung fbeg bs guvat bhg.\n\nVg'f n erny pelvat funzr.\n\nOhg vg vf cbffvoyr gb znfgre n HQS 2.6 vzntr. Lbh whfg arrq gb abg zbhag vg nf n ybbconpx naq gel gb jevgr vagb vg. Ubjrire, V qrpvqrq gung V qvqa'g arrq HQS ba zl OQ-Ef nf yvxr V fnvq vfb9660 yriry 3 qbrf vg nyy jvgu Ebpxevqtr naq Wbyvrg rkgrafvbaf. V'q bayl jnag HQS sbe OQ-ER jurer V jnag gb znavchyngr svyrf. Nf gung jnf vaperqvoyl fybbbbbj, V fvzcyl punatrq zl hfr pnfr.\n\nV qb hfr gung fpevcg gb sbezng synfu qevirf nf HQS gb zbir ynetr svyrf orgjrra jvaqbjf naq Yvahk znpuvarf ng jbex.</code></pre>\n",
      "date_published": "2025-03-11T00:00:00Z"
    },
    {
      "id": "/blog/2025/01/30/simple-key-value-text-parser-in-c/",
      "url": "/blog/2025/01/30/simple-key-value-text-parser-in-c/",
      "title": "Simple Key Value Text Parser In C",
      "content_html":"<p>For linux if you call <code>env</code> you will get a sequence of bash variable like:</p>\n<pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token assign-left variable\"><span class=\"token environment constant\">XDG_SESSION_DESKTOP</span></span><span class=\"token operator\">=</span>cinnamon\n<span class=\"token assign-left variable\">QT_QPA_PLATFORMTHEME</span><span class=\"token operator\">=</span>qt5ct\n<span class=\"token assign-left variable\"><span class=\"token environment constant\">XDG_SESSION_TYPE</span></span><span class=\"token operator\">=</span>x11</code></pre>\n<p>What if you want to parse such files in C? I written a <code>kv_parse_value()</code> which might help you!</p>\n<p>It has zero dependencies, doesn't require malloc and also can handle whitespace and quoted strings.</p>\n<p>Typically application is linux software, embedded systems, simple configuration store... etc...</p>\n<p>If this helps you, please do let me know!</p>\n<p>Also it's now in github at <a href=\"https://github.com/mofosyne/kv_parse_value.c\">https://github.com/mofosyne/kv_parse_value.c</a></p>\n<hr />\n<p>In addition, I noticed that for very simple INI files this will be able to parse it as well!</p>\n<p>You could potentially also parse some linux program output which uses a similar form...\nbut for those kind of unstructured output it would tend to have whitespace and use <code>:</code> instead of <code>=</code>.</p>\n<p>I have intentionally written this in a way that you can easily modify and strip it down, in case you\nare trying to run this in an embedded or restricted context.</p>\n<h2>Other Style Supported</h2>\n<h3>Spaces and ':'</h3>\n<pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token environment constant\">XDG_SESSION_DESKTOP</span>   <span class=\"token builtin class-name\">:</span> cinnamon\nQT_QPA_PLATFORMTHEME  <span class=\"token builtin class-name\">:</span> qt5ct\n<span class=\"token environment constant\">XDG_SESSION_TYPE</span>      <span class=\"token builtin class-name\">:</span> x11</code></pre>\n<h3>Quotes and Double Quotes</h3>\n<pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token assign-left variable\"><span class=\"token environment constant\">XDG_SESSION_DESKTOP</span></span><span class=\"token operator\">=</span><span class=\"token string\">\"cinnamon\"</span>\n<span class=\"token assign-left variable\">QT_QPA_PLATFORMTHEME</span><span class=\"token operator\">=</span><span class=\"token string\">\"qt5ct\"</span>\n<span class=\"token assign-left variable\"><span class=\"token environment constant\">XDG_SESSION_TYPE</span></span><span class=\"token operator\">=</span><span class=\"token string\">\"x11\"</span></code></pre>\n<h2>Key Features:</h2>\n<ul>\n<li><strong>ASCII Support Only</strong>: The function only processes standard ASCII characters.\nNon-ASCII input may produce undefined behavior.</li>\n<li><strong>Malloc-Free</strong>: No dynamic memory allocation is used. The caller must provide a fixed-size buffer.</li>\n<li><strong>String-Only Values</strong>: Extracted values are stored as null-terminated C strings.</li>\n<li><strong>Whitespace Handling</strong> (<code>KV_PARSE_WHITESPACE_SKIP</code>):\n<ul>\n<li>Ignores leading and trailing spaces/tabs around keys and values.</li>\n</ul>\n</li>\n<li><strong>Quoted String Support</strong> (<code>KV_PARSE_QUOTED_STRINGS</code>):\n<ul>\n<li>Allows values to be enclosed in single (<code>'</code>) or double (<code>&quot;</code>) quotes.</li>\n<li>Handles escaped quotes within quoted values (<code>&quot;example\\&quot;text&quot;</code>).</li>\n</ul>\n</li>\n<li><strong>Multi-Character Delimiter Support</strong>:\n<ul>\n<li>Accepts both <code>=</code> and <code>:</code> as key-value separators (e.g., <code>&quot;key=value&quot;</code> or <code>&quot;key: value&quot;</code>).</li>\n</ul>\n</li>\n<li><strong>Line-Based Parsing</strong>:\n<ul>\n<li>The function skips to the next line if the key does not match.</li>\n</ul>\n</li>\n<li><strong>Safe String Copy</strong>:\n<ul>\n<li>Ensures the extracted value does not exceed <code>value_max - 1</code> characters.</li>\n</ul>\n</li>\n</ul>\n<h2>Source</h2>\n<pre class=\"language-c\"><code class=\"language-c\"><span class=\"token comment\">/* Simple ANSI C KV Parser\n * 2025 Brian Khuu (This Code Is Released To The Public Domain)\n * To test this function run `cat kvparser.h | tcc -DKV_PARSER_TEST -run -` */</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name\">KV_PARSE_WHITESPACE_SKIP</span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name\">KV_PARSE_QUOTED_STRINGS</span></span>\n\n<span class=\"token comment\">/**\n * @brief Parses a key-value pair from a given string.\n *\n * 2025 Brian Khuu https://briankhuu.com/ (This function is dedicated to Public Domain)\n * https://briankhuu.com/blog/2025/01/30/simple-key-value-text-parser-in-c/\n *\n * This function extracts the value associated with a specified key in a formatted key-value string.\n *\n * ## Supported Features:\n * - **Whitespace Skipping** (`KV_PARSE_WHITESPACE_SKIP`): Ignores spaces and tabs around keys and values.\n * - **Quoted String Support** (`KV_PARSE_QUOTED_STRINGS`): Handles values enclosed in single (`'`) or double (`\"`) quotes.\n * - **Key Delimiters**: Supports both `=` and `:` as key-value separators.\n *\n * @param str Input string containing multiple key-value pairs (e.g., \"key=value\") separated by newline.\n * @param key The key to search for in the input string.\n * @param value Output buffer to store the extracted value.\n * @param value_max Maximum length of the output buffer (`value`), including the null terminator.\n * @return The length of the extracted value (excluding the null terminator) on success, or `0` if the key is not found.\n *\n * @note If `KV_PARSE_WHITESPACE_SKIP` is defined, leading and trailing whitespace is ignored before returning the value.\n * @note If `KV_PARSE_QUOTED_STRINGS` is defined, values can be enclosed in single (`'`) or double (`\"`) quotes.\n *\n * @example Usage Example:\n * @code\n * char buffer[50];\n * unsigned int len = kv_parse_value(\"username=admin\\npassword=1234\", \"username\", buffer, sizeof(buffer));\n * if (len > 0) {\n *     printf(\"Username: %s\\n\", buffer);\n * } else {\n *     printf(\"Key not found.\\n\");\n * }\n * @endcode\n */</span>\n<span class=\"token keyword\">unsigned</span> <span class=\"token keyword\">int</span> <span class=\"token function\">kv_parse_value</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">const</span> <span class=\"token keyword\">char</span> <span class=\"token operator\">*</span>str<span class=\"token punctuation\">,</span> <span class=\"token keyword\">const</span> <span class=\"token keyword\">char</span> <span class=\"token operator\">*</span>key<span class=\"token punctuation\">,</span> <span class=\"token keyword\">char</span> <span class=\"token operator\">*</span>value<span class=\"token punctuation\">,</span> <span class=\"token keyword\">unsigned</span> <span class=\"token keyword\">int</span> value_max<span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">;</span> <span class=\"token operator\">*</span>str <span class=\"token operator\">!=</span> <span class=\"token char\">'\\0'</span><span class=\"token punctuation\">;</span> str<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">ifdef</span> <span class=\"token expression\">KV_PARSE_WHITESPACE_SKIP</span></span>\n        <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span><span class=\"token operator\">*</span>str <span class=\"token operator\">==</span> <span class=\"token char\">' '</span> <span class=\"token operator\">||</span> <span class=\"token operator\">*</span>str <span class=\"token operator\">==</span> <span class=\"token char\">'\\t'</span><span class=\"token punctuation\">)</span>\n        <span class=\"token punctuation\">{</span>\n            str<span class=\"token operator\">++</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">endif</span></span>\n\n        <span class=\"token comment\">/* Check For Key */</span>\n        <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> i <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> <span class=\"token operator\">*</span>str <span class=\"token operator\">!=</span> <span class=\"token char\">'\\0'</span> <span class=\"token operator\">&amp;&amp;</span> key<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token char\">'\\0'</span><span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">,</span> str<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span>\n        <span class=\"token punctuation\">{</span>\n            <span class=\"token comment\">/* Key Mismatched. Skip Line */</span>\n            <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token operator\">*</span>str <span class=\"token operator\">!=</span> key<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n            <span class=\"token punctuation\">{</span>\n                <span class=\"token keyword\">goto</span> skip_line<span class=\"token punctuation\">;</span>\n            <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">}</span>\n\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">ifdef</span> <span class=\"token expression\">KV_PARSE_WHITESPACE_SKIP</span></span>\n        <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span><span class=\"token operator\">*</span>str <span class=\"token operator\">==</span> <span class=\"token char\">' '</span> <span class=\"token operator\">||</span> <span class=\"token operator\">*</span>str <span class=\"token operator\">==</span> <span class=\"token char\">'\\t'</span><span class=\"token punctuation\">)</span>\n        <span class=\"token punctuation\">{</span>\n            str<span class=\"token operator\">++</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">endif</span></span>\n\n        <span class=\"token comment\">/* Check For Key Value Delimiter */</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token operator\">*</span>str <span class=\"token operator\">!=</span> <span class=\"token char\">'='</span> <span class=\"token operator\">&amp;&amp;</span> <span class=\"token operator\">*</span>str <span class=\"token operator\">!=</span> <span class=\"token char\">':'</span><span class=\"token punctuation\">)</span>\n        <span class=\"token punctuation\">{</span>\n            <span class=\"token keyword\">goto</span> skip_line<span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n        str<span class=\"token operator\">++</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">ifdef</span> <span class=\"token expression\">KV_PARSE_WHITESPACE_SKIP</span></span>\n        <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span><span class=\"token operator\">*</span>str <span class=\"token operator\">==</span> <span class=\"token char\">' '</span> <span class=\"token operator\">||</span> <span class=\"token operator\">*</span>str <span class=\"token operator\">==</span> <span class=\"token char\">'\\t'</span><span class=\"token punctuation\">)</span>\n        <span class=\"token punctuation\">{</span>\n            str<span class=\"token operator\">++</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">endif</span></span>\n\n        <span class=\"token comment\">/* Copy Value To Buffer */</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">ifdef</span> <span class=\"token expression\">KV_PARSE_QUOTED_STRINGS</span></span>\n        <span class=\"token keyword\">char</span> quote <span class=\"token operator\">=</span> <span class=\"token char\">'\\0'</span><span class=\"token punctuation\">;</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">endif</span></span>\n        <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> i <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;</span> <span class=\"token punctuation\">(</span>value_max <span class=\"token operator\">-</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> str<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span>\n        <span class=\"token punctuation\">{</span>\n            <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token operator\">*</span>str <span class=\"token operator\">==</span> <span class=\"token char\">'\\0'</span> <span class=\"token operator\">||</span> <span class=\"token operator\">*</span>str <span class=\"token operator\">==</span> <span class=\"token char\">'\\r'</span> <span class=\"token operator\">||</span> <span class=\"token operator\">*</span>str <span class=\"token operator\">==</span> <span class=\"token char\">'\\n'</span><span class=\"token punctuation\">)</span>\n            <span class=\"token punctuation\">{</span>\n                <span class=\"token comment\">/* End Of Line. Trim trailing whitespace before returning the value. */</span>\n                value<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token char\">'\\0'</span><span class=\"token punctuation\">;</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">ifdef</span> <span class=\"token expression\">KV_PARSE_WHITESPACE_SKIP</span></span>\n                <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>i <span class=\"token operator\">></span> <span class=\"token number\">0</span> <span class=\"token operator\">&amp;&amp;</span> <span class=\"token punctuation\">(</span>value<span class=\"token punctuation\">[</span>i <span class=\"token operator\">-</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token char\">' '</span> <span class=\"token operator\">||</span> value<span class=\"token punctuation\">[</span>i <span class=\"token operator\">-</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token char\">'\\t'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n                <span class=\"token punctuation\">{</span>\n                    i<span class=\"token operator\">--</span><span class=\"token punctuation\">;</span>\n                    value<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token char\">'\\0'</span><span class=\"token punctuation\">;</span>\n                <span class=\"token punctuation\">}</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">endif</span></span>\n                <span class=\"token keyword\">return</span> i<span class=\"token punctuation\">;</span>\n            <span class=\"token punctuation\">}</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">ifdef</span> <span class=\"token expression\">KV_PARSE_QUOTED_STRINGS</span></span>\n            <span class=\"token keyword\">else</span> <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>quote <span class=\"token operator\">==</span> <span class=\"token char\">'\\0'</span> <span class=\"token operator\">&amp;&amp;</span> <span class=\"token punctuation\">(</span><span class=\"token operator\">*</span>str <span class=\"token operator\">==</span> <span class=\"token char\">'\\''</span> <span class=\"token operator\">||</span> <span class=\"token operator\">*</span>str <span class=\"token operator\">==</span> <span class=\"token char\">'\"'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n            <span class=\"token punctuation\">{</span>\n                <span class=\"token comment\">/* Start Of Quoted String */</span>\n                quote <span class=\"token operator\">=</span> <span class=\"token operator\">*</span>str<span class=\"token punctuation\">;</span>\n                <span class=\"token keyword\">continue</span><span class=\"token punctuation\">;</span>\n            <span class=\"token punctuation\">}</span>\n            <span class=\"token keyword\">else</span> <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>quote <span class=\"token operator\">!=</span> <span class=\"token char\">'\\0'</span> <span class=\"token operator\">&amp;&amp;</span> <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span>str <span class=\"token operator\">-</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">!=</span> <span class=\"token char\">'\\\\'</span> <span class=\"token operator\">&amp;&amp;</span> <span class=\"token operator\">*</span>str <span class=\"token operator\">==</span> quote<span class=\"token punctuation\">)</span>\n            <span class=\"token punctuation\">{</span>\n                <span class=\"token comment\">/* End Of Quoted String. Return Value */</span>\n                value<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token char\">'\\0'</span><span class=\"token punctuation\">;</span>\n                <span class=\"token keyword\">return</span> i<span class=\"token punctuation\">;</span>\n            <span class=\"token punctuation\">}</span>\n            <span class=\"token keyword\">else</span> <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>quote <span class=\"token operator\">!=</span> <span class=\"token char\">'\\0'</span> <span class=\"token operator\">&amp;&amp;</span> <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span>str <span class=\"token operator\">-</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token char\">'\\\\'</span> <span class=\"token operator\">&amp;&amp;</span> <span class=\"token operator\">*</span>str <span class=\"token operator\">==</span> quote<span class=\"token punctuation\">)</span>\n            <span class=\"token punctuation\">{</span>\n                <span class=\"token comment\">/* Escaped Quote Character In Quoted String */</span>\n                value<span class=\"token punctuation\">[</span>i <span class=\"token operator\">-</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token operator\">*</span>str<span class=\"token punctuation\">;</span>\n                <span class=\"token keyword\">continue</span><span class=\"token punctuation\">;</span>\n            <span class=\"token punctuation\">}</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">endif</span></span>\n\n            value<span class=\"token punctuation\">[</span>i<span class=\"token operator\">++</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token operator\">*</span>str<span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n\n        <span class=\"token comment\">/* Value too large for buffer. Don't return a value. */</span>\n        value<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token char\">'\\0'</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">return</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n\n    skip_line<span class=\"token operator\">:</span>\n        <span class=\"token comment\">/* Search for start of next line */</span>\n        <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span><span class=\"token operator\">*</span>str <span class=\"token operator\">!=</span> <span class=\"token char\">'\\n'</span><span class=\"token punctuation\">)</span>\n        <span class=\"token punctuation\">{</span>\n            <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token operator\">*</span>str <span class=\"token operator\">==</span> <span class=\"token char\">'\\0'</span><span class=\"token punctuation\">)</span>\n            <span class=\"token punctuation\">{</span>\n                <span class=\"token comment\">/* End of string. Key was not found. */</span>\n                <span class=\"token keyword\">return</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n            <span class=\"token punctuation\">}</span>\n            str<span class=\"token operator\">++</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n\n    <span class=\"token comment\">/* End of string. Key was not found. */</span>\n    <span class=\"token keyword\">return</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">ifdef</span> <span class=\"token expression\">KV_PARSER_TEST</span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;assert.h></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;stdio.h></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;string.h></span></span>\n\n<span class=\"token comment\">// Test case function</span>\n<span class=\"token keyword\">void</span> <span class=\"token function\">run_tests</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">char</span> buffer<span class=\"token punctuation\">[</span><span class=\"token number\">100</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span><span class=\"token number\">0</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">int</span> buffer_count <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token comment\">// **Test 1: Basic Key-Value Retrieval**</span>\n    <span class=\"token function\">memset</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    buffer_count <span class=\"token operator\">=</span> <span class=\"token function\">kv_parse_value</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"key1=value1\\nkey2=value2\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"key1\"</span><span class=\"token punctuation\">,</span> buffer<span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">assert</span><span class=\"token punctuation\">(</span>buffer_count <span class=\"token operator\">==</span> <span class=\"token number\">6</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">assert</span><span class=\"token punctuation\">(</span><span class=\"token function\">strcmp</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">,</span> <span class=\"token string\">\"value1\"</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token comment\">// **Test 2: Retrieve Last Key**</span>\n    <span class=\"token function\">memset</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    buffer_count <span class=\"token operator\">=</span> <span class=\"token function\">kv_parse_value</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"a=b\\nc=d\\ne=f\\ng=hello\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"g\"</span><span class=\"token punctuation\">,</span> buffer<span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">assert</span><span class=\"token punctuation\">(</span>buffer_count <span class=\"token operator\">==</span> <span class=\"token number\">5</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">assert</span><span class=\"token punctuation\">(</span><span class=\"token function\">strcmp</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">,</span> <span class=\"token string\">\"hello\"</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token comment\">// **Test 3: Key Not Found**</span>\n    <span class=\"token function\">memset</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    buffer_count <span class=\"token operator\">=</span> <span class=\"token function\">kv_parse_value</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"a=b\\nc=d\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"z\"</span><span class=\"token punctuation\">,</span> buffer<span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">assert</span><span class=\"token punctuation\">(</span>buffer_count <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token comment\">// **Test 4: Buffer Too Small**</span>\n    <span class=\"token function\">memset</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    buffer_count <span class=\"token operator\">=</span> <span class=\"token function\">kv_parse_value</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"longkey=longvalue\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"longkey\"</span><span class=\"token punctuation\">,</span> buffer<span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">assert</span><span class=\"token punctuation\">(</span>buffer_count <span class=\"token operator\">==</span> <span class=\"token number\">9</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">assert</span><span class=\"token punctuation\">(</span><span class=\"token function\">strcmp</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">,</span> <span class=\"token string\">\"longvalue\"</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token comment\">// **Test 5: Empty Input**</span>\n    <span class=\"token function\">memset</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    buffer_count <span class=\"token operator\">=</span> <span class=\"token function\">kv_parse_value</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"anykey\"</span><span class=\"token punctuation\">,</span> buffer<span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">assert</span><span class=\"token punctuation\">(</span>buffer_count <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token comment\">// **Test 6: Input Without Key-Value Pairs**</span>\n    <span class=\"token function\">memset</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    buffer_count <span class=\"token operator\">=</span> <span class=\"token function\">kv_parse_value</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"randomtext\\nanotherline\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"key\"</span><span class=\"token punctuation\">,</span> buffer<span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">assert</span><span class=\"token punctuation\">(</span>buffer_count <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token comment\">//  **Test 7: Handling Spaces Around Key and Value**</span>\n    <span class=\"token function\">memset</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    buffer_count <span class=\"token operator\">=</span> <span class=\"token function\">kv_parse_value</span><span class=\"token punctuation\">(</span><span class=\"token string\">\" key = value \\n next = test \"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"key\"</span><span class=\"token punctuation\">,</span> buffer<span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">ifdef</span> <span class=\"token expression\">KV_PARSE_WHITESPACE_SKIP</span></span>\n    <span class=\"token function\">assert</span><span class=\"token punctuation\">(</span>buffer_count <span class=\"token operator\">==</span> <span class=\"token number\">5</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">assert</span><span class=\"token punctuation\">(</span><span class=\"token function\">strcmp</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">,</span> <span class=\"token string\">\"value\"</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">else</span></span>\n    <span class=\"token function\">assert</span><span class=\"token punctuation\">(</span>buffer_count <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">endif</span></span>\n\n    <span class=\"token comment\">// **Test 8: Duplicate Keys (Return First Occurrence)**</span>\n    <span class=\"token function\">memset</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    buffer_count <span class=\"token operator\">=</span> <span class=\"token function\">kv_parse_value</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"x=1\\nx=2\\nx=3\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"x\"</span><span class=\"token punctuation\">,</span> buffer<span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">assert</span><span class=\"token punctuation\">(</span>buffer_count <span class=\"token operator\">==</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">assert</span><span class=\"token punctuation\">(</span><span class=\"token function\">strcmp</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">,</span> <span class=\"token string\">\"1\"</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token comment\">// **Test 9: Newline Variations (Windows vs. Unix)**</span>\n    <span class=\"token function\">memset</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    buffer_count <span class=\"token operator\">=</span> <span class=\"token function\">kv_parse_value</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"a=one\\r\\nb=two\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"b\"</span><span class=\"token punctuation\">,</span> buffer<span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">assert</span><span class=\"token punctuation\">(</span>buffer_count <span class=\"token operator\">==</span> <span class=\"token number\">3</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">assert</span><span class=\"token punctuation\">(</span><span class=\"token function\">strcmp</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">,</span> <span class=\"token string\">\"two\"</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token comment\">// **Test 10: Key With Special Characters**</span>\n    <span class=\"token function\">memset</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    buffer_count <span class=\"token operator\">=</span> <span class=\"token function\">kv_parse_value</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"user-name=admin\\nuser@domain.com=me\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"user-name\"</span><span class=\"token punctuation\">,</span> buffer<span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">assert</span><span class=\"token punctuation\">(</span>buffer_count <span class=\"token operator\">==</span> <span class=\"token number\">5</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">assert</span><span class=\"token punctuation\">(</span><span class=\"token function\">strcmp</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">,</span> <span class=\"token string\">\"admin\"</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token comment\">// **Test 11: Value Containing '='**</span>\n    <span class=\"token function\">memset</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    buffer_count <span class=\"token operator\">=</span> <span class=\"token function\">kv_parse_value</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"path=/home/user=data\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"path\"</span><span class=\"token punctuation\">,</span> buffer<span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">assert</span><span class=\"token punctuation\">(</span>buffer_count <span class=\"token operator\">==</span> <span class=\"token number\">15</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">assert</span><span class=\"token punctuation\">(</span><span class=\"token function\">strcmp</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">,</span> <span class=\"token string\">\"/home/user=data\"</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token comment\">// **Test 12: Quoted String **</span>\n    <span class=\"token function\">memset</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    buffer_count <span class=\"token operator\">=</span> <span class=\"token function\">kv_parse_value</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"path=\\\"/home/user=data\\\"\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"path\"</span><span class=\"token punctuation\">,</span> buffer<span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">ifdef</span> <span class=\"token expression\">KV_PARSE_QUOTED_STRINGS</span></span>\n    <span class=\"token function\">assert</span><span class=\"token punctuation\">(</span>buffer_count <span class=\"token operator\">==</span> <span class=\"token number\">15</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">assert</span><span class=\"token punctuation\">(</span><span class=\"token function\">strcmp</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">,</span> <span class=\"token string\">\"/home/user=data\"</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">else</span></span>\n    <span class=\"token function\">assert</span><span class=\"token punctuation\">(</span>buffer_count <span class=\"token operator\">==</span> <span class=\"token number\">17</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">assert</span><span class=\"token punctuation\">(</span><span class=\"token function\">strcmp</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">,</span> <span class=\"token string\">\"\\\"/home/user=data\\\"\"</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">endif</span></span>\n\n    <span class=\"token comment\">// **Test 13: Uncapped Quoted String **</span>\n    <span class=\"token function\">memset</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    buffer_count <span class=\"token operator\">=</span> <span class=\"token function\">kv_parse_value</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"path=\\\"/home/user=data\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"path\"</span><span class=\"token punctuation\">,</span> buffer<span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">ifdef</span> <span class=\"token expression\">KV_PARSE_QUOTED_STRINGS</span></span>\n    <span class=\"token function\">assert</span><span class=\"token punctuation\">(</span>buffer_count <span class=\"token operator\">==</span> <span class=\"token number\">15</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">assert</span><span class=\"token punctuation\">(</span><span class=\"token function\">strcmp</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">,</span> <span class=\"token string\">\"/home/user=data\"</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">else</span></span>\n    <span class=\"token function\">assert</span><span class=\"token punctuation\">(</span>buffer_count <span class=\"token operator\">==</span> <span class=\"token number\">16</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">assert</span><span class=\"token punctuation\">(</span><span class=\"token function\">strcmp</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">,</span> <span class=\"token string\">\"\\\"/home/user=data\"</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">endif</span></span>\n\n    <span class=\"token comment\">// **Test 14: Quoted String With Escaped Quote **</span>\n    <span class=\"token function\">memset</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    buffer_count <span class=\"token operator\">=</span> <span class=\"token function\">kv_parse_value</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"path=\\\"/home/\\\\\\\"user=data\\\"\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"path\"</span><span class=\"token punctuation\">,</span> buffer<span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">ifdef</span> <span class=\"token expression\">KV_PARSE_QUOTED_STRINGS</span></span>\n    <span class=\"token function\">assert</span><span class=\"token punctuation\">(</span>buffer_count <span class=\"token operator\">==</span> <span class=\"token number\">16</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">assert</span><span class=\"token punctuation\">(</span><span class=\"token function\">strcmp</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">,</span> <span class=\"token string\">\"/home/\\\"user=data\"</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">else</span></span>\n    <span class=\"token function\">assert</span><span class=\"token punctuation\">(</span>buffer_count <span class=\"token operator\">==</span> <span class=\"token number\">19</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">assert</span><span class=\"token punctuation\">(</span><span class=\"token function\">strcmp</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">,</span> <span class=\"token string\">\"\\\"/home/\\\\\\\"user=data\\\"\"</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">endif</span></span>\n\n    <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"kv_parse_value() passed successfully!\\n\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token comment\">// Run tests in main()</span>\n<span class=\"token keyword\">int</span> <span class=\"token function\">main</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span>\n    <span class=\"token function\">run_tests</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">return</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">endif</span></span></code></pre>\n<p>When you run the above source in tcc via <code>cat kvparser.h | tcc -DKV_PARSER_TEST -run -</code></p>\n<pre><code>kv_parse_value() passed successfully!\n</code></pre>\n",
      "date_published": "2025-01-30T00:00:00Z"
    },
    {
      "id": "/blog/2025/01/26/clibs-source-scanner-for-keyword-suggestion/",
      "url": "/blog/2025/01/26/clibs-source-scanner-for-keyword-suggestion/",
      "title": "Clibs Source Scanner for Keyword Suggestion",
      "content_html":"<p>In response to this idea for clibs C package manager <a href=\"https://github.com/clibs/clib/discussions/322\">Filter packages by tags and features. E.g. Is this package heapless? #322</a>, I created this C source scanner to scan C source code and generate keyword suggestions based on the code's properties of relevance for people browsing clib package list. Such as if the source code utilize dynamic memory (<code>malloc</code>, <code>free</code>, <code>realloc</code>)?</p>\n<hr />\n<h2>How It Works</h2>\n<p>The scanner works as follows:</p>\n<ol>\n<li>\n<p><strong>Comment and String Removal</strong>:</p>\n<ul>\n<li>The tool handles single-line (<code>//</code>), multi-line (<code>/* ... */</code>) comments and (<code>' ... '</code>) single quoted or (<code>&quot; ... &quot;</code>) double quoted string to ensure only meaningful tokens are processed.</li>\n</ul>\n</li>\n<li>\n<p><strong>Token Scanning</strong>:</p>\n<ul>\n<li>Tokens are extracted from the source file, with special attention to function calls.</li>\n</ul>\n</li>\n<li>\n<p><strong>Keyword Detection</strong>:</p>\n<ul>\n<li>The scanner checks for specific keywords and maintains a list of detected features of relevance to users.</li>\n</ul>\n</li>\n<li>\n<p><strong>Tag Emission</strong>:</p>\n<ul>\n<li>Based on the detected features, the scanner outputs a JSON-like list of tags to describe the source code.</li>\n</ul>\n</li>\n</ol>\n<h2>Example Output</h2>\n<h3>Detect heap use and goto usage</h3>\n<p>Input with stderr output disabled <code>2&gt;&amp;-</code>:</p>\n<pre class=\"language-bash\"><code class=\"language-bash\">tcc <span class=\"token parameter variable\">-run</span> ./source_keyword_suggester.c <span class=\"token operator\"><span class=\"token file-descriptor important\">2</span>>&amp;</span>- <span class=\"token operator\">&lt;&lt;</span> <span class=\"token string\">HEREDOC\n#include &lt;stdlib.h>\nint main() {\n    int *ptr = malloc(100);\n    free(ptr);\n    goto end;\nend:\n    return 0;\n}\nHEREDOC</span></code></pre>\n<p>Output:</p>\n<pre><code>[&quot;heap used&quot;, &quot;malloc&quot;, &quot;free&quot;, &quot;goto used&quot;]\n</code></pre>\n<h3>Show tokens detected</h3>\n<p>This shows how the scanner ignores certain tokens and find certain tokens</p>\n<p>Input with stdout output disabled <code>1&gt;&amp;-</code>:</p>\n<pre class=\"language-bash\"><code class=\"language-bash\">tcc <span class=\"token parameter variable\">-run</span> ./source_keyword_suggester.c <span class=\"token operator\"><span class=\"token file-descriptor important\">1</span>>&amp;</span>- <span class=\"token operator\">&lt;&lt;</span> <span class=\"token string\">HEREDOC\n#include &lt;stdlib.h>\nint main() {\n    int *ptr = malloc(100);\n    free(ptr);\n    goto end;\nend:\n    return 0;\n}\nHEREDOC</span></code></pre>\n<p>Output:</p>\n<pre><code>include\nstdlib.h\nint\nmain()\nint\nptr\nmalloc()\nfree()\nptr\ngoto\nend\nend\nreturn\n</code></pre>\n<h2>Source</h2>\n<pre class=\"language-c\"><code class=\"language-c\"><span class=\"token comment\">/*\n    Clibs Source Scanner For Keyword Suggestion\n    Author: Brian Khuu (2025)\n\n    This idea is to provide a mechanism for scanning a source code and\n    giving some keyword suggestions based on the properties of the\n    source code. In this case, I would like to mark a source code as\n    using dynamic memory or not. This won't be perfect, but it may help\n    encourage library writers to use keywords if it's already provided.\n\n    # MIT License\n\n    Copyright (c) 2025 Brian Khuu\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n\n */</span>\n\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;stdbool.h></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;stdio.h></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;string.h></span></span>\n\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name\">TOKEN_MAX</span> <span class=\"token expression\"><span class=\"token number\">256</span></span></span>\n\n<span class=\"token keyword\">typedef</span> <span class=\"token keyword\">struct</span> <span class=\"token class-name\">SourceTokenScanner</span>\n<span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">int</span> prev<span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">int</span> quote_char<span class=\"token punctuation\">;</span>\n    bool in_single_line_comment<span class=\"token punctuation\">;</span>\n    bool in_multi_line_comment<span class=\"token punctuation\">;</span>\n\n    bool token_ready<span class=\"token punctuation\">;</span>\n    bool token_is_function<span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">char</span> token<span class=\"token punctuation\">[</span>TOKEN_MAX <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">size_t</span> token_size<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span> SourceTokenScanner<span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">typedef</span> <span class=\"token keyword\">struct</span> <span class=\"token class-name\">SourceTagger</span>\n<span class=\"token punctuation\">{</span>\n    bool uses_malloc<span class=\"token punctuation\">;</span>\n    bool uses_free<span class=\"token punctuation\">;</span>\n    bool uses_realloc<span class=\"token punctuation\">;</span>\n    bool uses_goto<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span> SourceTagger<span class=\"token punctuation\">;</span>\n\nbool <span class=\"token function\">sourceTokenScanner</span><span class=\"token punctuation\">(</span>SourceTokenScanner <span class=\"token operator\">*</span>context<span class=\"token punctuation\">,</span> <span class=\"token keyword\">const</span> <span class=\"token keyword\">char</span> ch<span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>context<span class=\"token operator\">-></span>token_ready<span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        context<span class=\"token operator\">-></span>token<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token char\">'\\0'</span><span class=\"token punctuation\">;</span>\n        context<span class=\"token operator\">-></span>token_size <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n        context<span class=\"token operator\">-></span>token_ready <span class=\"token operator\">=</span> false<span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>ch <span class=\"token operator\">==</span> <span class=\"token char\">'\\''</span> <span class=\"token operator\">||</span> ch <span class=\"token operator\">==</span> <span class=\"token char\">'\"'</span> <span class=\"token operator\">||</span> context<span class=\"token operator\">-></span>quote_char<span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>context<span class=\"token operator\">-></span>quote_char<span class=\"token punctuation\">)</span>\n        <span class=\"token punctuation\">{</span>\n            <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>ch <span class=\"token operator\">==</span> context<span class=\"token operator\">-></span>quote_char <span class=\"token operator\">&amp;&amp;</span> context<span class=\"token operator\">-></span>prev <span class=\"token operator\">!=</span> <span class=\"token char\">'\\\\'</span><span class=\"token punctuation\">)</span>\n            <span class=\"token punctuation\">{</span>\n                context<span class=\"token operator\">-></span>quote_char <span class=\"token operator\">=</span> <span class=\"token char\">'\\0'</span><span class=\"token punctuation\">;</span>\n            <span class=\"token punctuation\">}</span>\n            <span class=\"token keyword\">else</span>\n            <span class=\"token punctuation\">{</span>\n                context<span class=\"token operator\">-></span>prev <span class=\"token operator\">=</span> ch<span class=\"token punctuation\">;</span>\n            <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">}</span>\n        <span class=\"token keyword\">else</span>\n        <span class=\"token punctuation\">{</span>\n            context<span class=\"token operator\">-></span>quote_char <span class=\"token operator\">=</span> ch<span class=\"token punctuation\">;</span>\n            context<span class=\"token operator\">-></span>prev <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n            context<span class=\"token operator\">-></span>token<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token char\">'\\0'</span><span class=\"token punctuation\">;</span>\n            context<span class=\"token operator\">-></span>token_size <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n        <span class=\"token keyword\">return</span> false<span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>context<span class=\"token operator\">-></span>prev <span class=\"token operator\">==</span> <span class=\"token char\">'/'</span> <span class=\"token operator\">&amp;&amp;</span> ch <span class=\"token operator\">==</span> <span class=\"token char\">'/'</span> <span class=\"token operator\">||</span> context<span class=\"token operator\">-></span>in_single_line_comment<span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>context<span class=\"token operator\">-></span>in_single_line_comment<span class=\"token punctuation\">)</span>\n        <span class=\"token punctuation\">{</span>\n            <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>ch <span class=\"token operator\">==</span> <span class=\"token char\">'\\n'</span><span class=\"token punctuation\">)</span>\n            <span class=\"token punctuation\">{</span>\n                context<span class=\"token operator\">-></span>in_single_line_comment <span class=\"token operator\">=</span> false<span class=\"token punctuation\">;</span>\n            <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">}</span>\n        <span class=\"token keyword\">else</span>\n        <span class=\"token punctuation\">{</span>\n            context<span class=\"token operator\">-></span>in_single_line_comment <span class=\"token operator\">=</span> true<span class=\"token punctuation\">;</span>\n            context<span class=\"token operator\">-></span>token<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token char\">'\\0'</span><span class=\"token punctuation\">;</span>\n            context<span class=\"token operator\">-></span>token_size <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n        <span class=\"token keyword\">return</span> false<span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>context<span class=\"token operator\">-></span>prev <span class=\"token operator\">==</span> <span class=\"token char\">'/'</span> <span class=\"token operator\">&amp;&amp;</span> ch <span class=\"token operator\">==</span> <span class=\"token char\">'*'</span> <span class=\"token operator\">||</span> context<span class=\"token operator\">-></span>in_multi_line_comment<span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>context<span class=\"token operator\">-></span>in_multi_line_comment<span class=\"token punctuation\">)</span>\n        <span class=\"token punctuation\">{</span>\n            <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>context<span class=\"token operator\">-></span>prev <span class=\"token operator\">==</span> <span class=\"token char\">'*'</span> <span class=\"token operator\">&amp;&amp;</span> ch <span class=\"token operator\">==</span> <span class=\"token char\">'/'</span><span class=\"token punctuation\">)</span>\n            <span class=\"token punctuation\">{</span>\n                context<span class=\"token operator\">-></span>in_multi_line_comment <span class=\"token operator\">=</span> false<span class=\"token punctuation\">;</span>\n                context<span class=\"token operator\">-></span>prev <span class=\"token operator\">=</span> <span class=\"token char\">'\\0'</span><span class=\"token punctuation\">;</span>\n            <span class=\"token punctuation\">}</span>\n            <span class=\"token keyword\">else</span>\n            <span class=\"token punctuation\">{</span>\n                context<span class=\"token operator\">-></span>prev <span class=\"token operator\">=</span> ch<span class=\"token punctuation\">;</span>\n            <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">}</span>\n        <span class=\"token keyword\">else</span>\n        <span class=\"token punctuation\">{</span>\n            context<span class=\"token operator\">-></span>in_multi_line_comment <span class=\"token operator\">=</span> true<span class=\"token punctuation\">;</span>\n            context<span class=\"token operator\">-></span>prev <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n            context<span class=\"token operator\">-></span>token<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token char\">'\\0'</span><span class=\"token punctuation\">;</span>\n            context<span class=\"token operator\">-></span>token_size <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n        <span class=\"token keyword\">return</span> false<span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n    context<span class=\"token operator\">-></span>prev <span class=\"token operator\">=</span> ch<span class=\"token punctuation\">;</span>\n\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token char\">'a'</span> <span class=\"token operator\">&lt;=</span> ch <span class=\"token operator\">&amp;&amp;</span> ch <span class=\"token operator\">&lt;=</span> <span class=\"token char\">'z'</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">||</span> <span class=\"token punctuation\">(</span><span class=\"token char\">'A'</span> <span class=\"token operator\">&lt;=</span> ch <span class=\"token operator\">&amp;&amp;</span> ch <span class=\"token operator\">&lt;=</span> <span class=\"token char\">'Z'</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">||</span> <span class=\"token punctuation\">(</span><span class=\"token char\">'0'</span> <span class=\"token operator\">&lt;=</span> ch <span class=\"token operator\">&amp;&amp;</span> ch <span class=\"token operator\">&lt;=</span> <span class=\"token char\">'9'</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">||</span> <span class=\"token punctuation\">(</span>ch <span class=\"token operator\">==</span> <span class=\"token char\">'_'</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">||</span> <span class=\"token punctuation\">(</span>ch <span class=\"token operator\">==</span> <span class=\"token char\">'.'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>context<span class=\"token operator\">-></span>token_size <span class=\"token operator\">&lt;</span> TOKEN_MAX<span class=\"token punctuation\">)</span>\n        <span class=\"token punctuation\">{</span>\n            context<span class=\"token operator\">-></span>token<span class=\"token punctuation\">[</span>context<span class=\"token operator\">-></span>token_size<span class=\"token operator\">++</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> ch<span class=\"token punctuation\">;</span>\n            context<span class=\"token operator\">-></span>token<span class=\"token punctuation\">[</span>context<span class=\"token operator\">-></span>token_size<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token char\">'\\0'</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n        <span class=\"token keyword\">return</span> false<span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>context<span class=\"token operator\">-></span>token_size <span class=\"token operator\">></span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>context<span class=\"token operator\">-></span>token_size <span class=\"token operator\">&lt;=</span> <span class=\"token number\">2</span> <span class=\"token operator\">||</span> <span class=\"token punctuation\">(</span><span class=\"token char\">'0'</span> <span class=\"token operator\">&lt;=</span> context<span class=\"token operator\">-></span>token<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">&amp;&amp;</span> context<span class=\"token operator\">-></span>token<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">&lt;=</span> <span class=\"token char\">'9'</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">||</span> <span class=\"token punctuation\">(</span>context<span class=\"token operator\">-></span>token<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token char\">'.'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n        <span class=\"token punctuation\">{</span>\n            <span class=\"token comment\">// Exclude short tokens or invalid starting characters</span>\n            <span class=\"token comment\">// Dev Note: Shortest function name is 3 characters long (e.g. sin, cos, tan, log etc...)</span>\n            context<span class=\"token operator\">-></span>token<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token char\">'\\0'</span><span class=\"token punctuation\">;</span>\n            context<span class=\"token operator\">-></span>token_size <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n            <span class=\"token keyword\">return</span> false<span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n        <span class=\"token keyword\">else</span>\n        <span class=\"token punctuation\">{</span>\n            <span class=\"token comment\">// Heuristic Token Found</span>\n            context<span class=\"token operator\">-></span>token_is_function <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>ch <span class=\"token operator\">==</span> <span class=\"token char\">'('</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">?</span> true <span class=\"token operator\">:</span> false<span class=\"token punctuation\">;</span>\n            context<span class=\"token operator\">-></span>token_ready <span class=\"token operator\">=</span> true<span class=\"token punctuation\">;</span>\n            <span class=\"token keyword\">return</span> true<span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n\n    <span class=\"token keyword\">return</span> false<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token keyword\">void</span> <span class=\"token function\">add_tags</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">char</span> <span class=\"token operator\">*</span><span class=\"token operator\">*</span>tags<span class=\"token punctuation\">,</span> <span class=\"token class-name\">size_t</span> <span class=\"token operator\">*</span>tag_count<span class=\"token punctuation\">,</span> <span class=\"token class-name\">size_t</span> max_tags<span class=\"token punctuation\">,</span> <span class=\"token keyword\">char</span> <span class=\"token operator\">*</span>tag<span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span>\n    <span class=\"token comment\">// Check if tag already added</span>\n    <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> i <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;</span> max_tags<span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>tags<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token constant\">NULL</span> <span class=\"token operator\">&amp;&amp;</span> <span class=\"token punctuation\">(</span><span class=\"token function\">strcmp</span><span class=\"token punctuation\">(</span>tags<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> tag<span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n        <span class=\"token punctuation\">{</span>\n            <span class=\"token keyword\">return</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n\n    <span class=\"token comment\">// Add tag</span>\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token operator\">*</span>tag_count <span class=\"token operator\">&lt;</span> max_tags<span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        tags<span class=\"token punctuation\">[</span><span class=\"token operator\">*</span>tag_count<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> tag<span class=\"token punctuation\">;</span>\n        <span class=\"token operator\">*</span>tag_count <span class=\"token operator\">=</span> <span class=\"token operator\">*</span>tag_count <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token keyword\">int</span> <span class=\"token function\">main</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">char</span> ch<span class=\"token punctuation\">;</span>\n    SourceTokenScanner sourceTokenScannerState <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span><span class=\"token number\">0</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n    SourceTagger sourceTagger <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span><span class=\"token number\">0</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token comment\">/* Scan Source For Indicator Tokens */</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>ch <span class=\"token operator\">=</span> <span class=\"token function\">getchar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">!=</span> <span class=\"token constant\">EOF</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token function\">sourceTokenScanner</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>sourceTokenScannerState<span class=\"token punctuation\">,</span> ch<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n        <span class=\"token punctuation\">{</span>\n            <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>sourceTokenScannerState<span class=\"token punctuation\">.</span>token_is_function<span class=\"token punctuation\">)</span>\n            <span class=\"token punctuation\">{</span>\n                <span class=\"token comment\">// Function</span>\n                <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token function\">strcmp</span><span class=\"token punctuation\">(</span>sourceTokenScannerState<span class=\"token punctuation\">.</span>token<span class=\"token punctuation\">,</span> <span class=\"token string\">\"malloc\"</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n                <span class=\"token punctuation\">{</span>\n                    sourceTagger<span class=\"token punctuation\">.</span>uses_malloc <span class=\"token operator\">=</span> true<span class=\"token punctuation\">;</span>\n                <span class=\"token punctuation\">}</span>\n                <span class=\"token keyword\">else</span> <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token function\">strcmp</span><span class=\"token punctuation\">(</span>sourceTokenScannerState<span class=\"token punctuation\">.</span>token<span class=\"token punctuation\">,</span> <span class=\"token string\">\"free\"</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n                <span class=\"token punctuation\">{</span>\n                    sourceTagger<span class=\"token punctuation\">.</span>uses_free <span class=\"token operator\">=</span> true<span class=\"token punctuation\">;</span>\n                <span class=\"token punctuation\">}</span>\n                <span class=\"token keyword\">else</span> <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token function\">strcmp</span><span class=\"token punctuation\">(</span>sourceTokenScannerState<span class=\"token punctuation\">.</span>token<span class=\"token punctuation\">,</span> <span class=\"token string\">\"realloc\"</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n                <span class=\"token punctuation\">{</span>\n                    sourceTagger<span class=\"token punctuation\">.</span>uses_realloc <span class=\"token operator\">=</span> true<span class=\"token punctuation\">;</span>\n                <span class=\"token punctuation\">}</span>\n            <span class=\"token punctuation\">}</span>\n            <span class=\"token keyword\">else</span>\n            <span class=\"token punctuation\">{</span>\n                <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token function\">strcmp</span><span class=\"token punctuation\">(</span>sourceTokenScannerState<span class=\"token punctuation\">.</span>token<span class=\"token punctuation\">,</span> <span class=\"token string\">\"goto\"</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n                <span class=\"token punctuation\">{</span>\n                    sourceTagger<span class=\"token punctuation\">.</span>uses_goto <span class=\"token operator\">=</span> true<span class=\"token punctuation\">;</span>\n                <span class=\"token punctuation\">}</span>\n            <span class=\"token punctuation\">}</span>\n            <span class=\"token function\">fprintf</span><span class=\"token punctuation\">(</span><span class=\"token constant\">stderr</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"%s%s\\n\"</span><span class=\"token punctuation\">,</span> sourceTokenScannerState<span class=\"token punctuation\">.</span>token<span class=\"token punctuation\">,</span> sourceTokenScannerState<span class=\"token punctuation\">.</span>token_is_function <span class=\"token operator\">?</span> <span class=\"token string\">\"()\"</span> <span class=\"token operator\">:</span> <span class=\"token string\">\"\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n\n    <span class=\"token comment\">/* Generate Tag Suggestions */</span>\n    <span class=\"token keyword\">char</span> <span class=\"token operator\">*</span>tags<span class=\"token punctuation\">[</span><span class=\"token number\">100</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span><span class=\"token constant\">NULL</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">size_t</span> tag_count <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token operator\">!</span>sourceTagger<span class=\"token punctuation\">.</span>uses_malloc <span class=\"token operator\">&amp;&amp;</span> <span class=\"token operator\">!</span>sourceTagger<span class=\"token punctuation\">.</span>uses_free <span class=\"token operator\">&amp;&amp;</span> <span class=\"token operator\">!</span>sourceTagger<span class=\"token punctuation\">.</span>uses_realloc<span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        <span class=\"token function\">add_tags</span><span class=\"token punctuation\">(</span>tags<span class=\"token punctuation\">,</span> <span class=\"token operator\">&amp;</span>tag_count<span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>tags<span class=\"token punctuation\">)</span> <span class=\"token operator\">/</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>tags<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"no heap\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token function\">add_tags</span><span class=\"token punctuation\">(</span>tags<span class=\"token punctuation\">,</span> <span class=\"token operator\">&amp;</span>tag_count<span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>tags<span class=\"token punctuation\">)</span> <span class=\"token operator\">/</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>tags<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"heapless\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token function\">add_tags</span><span class=\"token punctuation\">(</span>tags<span class=\"token punctuation\">,</span> <span class=\"token operator\">&amp;</span>tag_count<span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>tags<span class=\"token punctuation\">)</span> <span class=\"token operator\">/</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>tags<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"no malloc\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>sourceTagger<span class=\"token punctuation\">.</span>uses_malloc<span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        <span class=\"token function\">add_tags</span><span class=\"token punctuation\">(</span>tags<span class=\"token punctuation\">,</span> <span class=\"token operator\">&amp;</span>tag_count<span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>tags<span class=\"token punctuation\">)</span> <span class=\"token operator\">/</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>tags<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"heap used\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token function\">add_tags</span><span class=\"token punctuation\">(</span>tags<span class=\"token punctuation\">,</span> <span class=\"token operator\">&amp;</span>tag_count<span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>tags<span class=\"token punctuation\">)</span> <span class=\"token operator\">/</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>tags<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"malloc\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>sourceTagger<span class=\"token punctuation\">.</span>uses_free<span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        <span class=\"token function\">add_tags</span><span class=\"token punctuation\">(</span>tags<span class=\"token punctuation\">,</span> <span class=\"token operator\">&amp;</span>tag_count<span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>tags<span class=\"token punctuation\">)</span> <span class=\"token operator\">/</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>tags<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"heap used\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token function\">add_tags</span><span class=\"token punctuation\">(</span>tags<span class=\"token punctuation\">,</span> <span class=\"token operator\">&amp;</span>tag_count<span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>tags<span class=\"token punctuation\">)</span> <span class=\"token operator\">/</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>tags<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"free\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>sourceTagger<span class=\"token punctuation\">.</span>uses_realloc<span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        <span class=\"token function\">add_tags</span><span class=\"token punctuation\">(</span>tags<span class=\"token punctuation\">,</span> <span class=\"token operator\">&amp;</span>tag_count<span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>tags<span class=\"token punctuation\">)</span> <span class=\"token operator\">/</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>tags<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"heap used\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token function\">add_tags</span><span class=\"token punctuation\">(</span>tags<span class=\"token punctuation\">,</span> <span class=\"token operator\">&amp;</span>tag_count<span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>tags<span class=\"token punctuation\">)</span> <span class=\"token operator\">/</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>tags<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"realloc\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>sourceTagger<span class=\"token punctuation\">.</span>uses_goto<span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        <span class=\"token function\">add_tags</span><span class=\"token punctuation\">(</span>tags<span class=\"token punctuation\">,</span> <span class=\"token operator\">&amp;</span>tag_count<span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>tags<span class=\"token punctuation\">)</span> <span class=\"token operator\">/</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>tags<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"goto used\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n    <span class=\"token comment\">/* Print Tag Suggestions */</span>\n    <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"[\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> i <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;</span> tag_count<span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>i <span class=\"token operator\">></span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n        <span class=\"token punctuation\">{</span>\n            <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\", \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n        <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"\\\"%s\\\"\"</span><span class=\"token punctuation\">,</span> tags<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"]\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token keyword\">return</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre>\n",
      "date_published": "2025-01-26T00:00:00Z"
    },
    {
      "id": "/blog/2025/01/22/json-fmt-h/",
      "url": "/blog/2025/01/22/json-fmt-h/",
      "title": "json_fmt.h",
      "content_html":"<p>As an alternative to writing JSON by hand using purely printf, I written a helper header file called <code>json_fmt.h</code>.\nThere are other options, but I just want something quick to get going with json output, so written a series of\nC macros that I can use to make it easier to write the formatting string for a printf call.</p>\n<hr />\n<p>Note that this approach is quite limited to future expansion, but is suitable for quickly getting\na json output without including other dependencies as this is only a single header file.</p>\n<p>But it would be helpful for people who stumble on this post to checkout these repos that I personally\nwould recommend checking out for C code embedded system purpose. Just note that both options do\nuse the heap while my approach does not. This might be a factor in choosing mine or the options\nbelow.</p>\n<ul>\n<li><a href=\"https://github.com/DaveGamble/cJSON\">cJSON</a> -  Ultralightweight JSON parser in ANSI C\n<ul>\n<li>I used before and quite enjoyed using.</li>\n<li>Uses Malloc</li>\n</ul>\n</li>\n<li><a href=\"https://github.com/cesanta/frozen\">frozen</a> -  JSON parser and generator for C/C++ with scanf/printf like interface.\n<ul>\n<li>Just discovered recently and I like the idea of being able to use printf style semantics</li>\n<li>Uses Malloc</li>\n</ul>\n</li>\n</ul>\n<p>But if the above is too overkill or you don't got the time and mindspace to deal with integrating it\nin... or you want to minimize dependencies. That's when you can consider below.</p>\n<p>The design rule for this micro library is to only deal with the most common json elements that is\nerror prone or annoying to manually write. So in this context, it would tend to be dealing with <code>&quot;</code>\nand keeping track of the keys and values. So ultimately instead of writing</p>\n<pre class=\"language-c\"><code class=\"language-c\"><span class=\"token function\">printf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"{\\\"user\\\":%s, \\\"age\\\":%d)}\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"marcus\"</span><span class=\"token punctuation\">,</span> <span class=\"token number\">25</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre>\n<p>You would write:</p>\n<pre class=\"language-c\"><code class=\"language-c\"><span class=\"token function\">printf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"{\"</span> <span class=\"token function\">JSON_FMT_STR</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"user\"</span><span class=\"token punctuation\">)</span> <span class=\"token string\">\", \"</span> <span class=\"token function\">JSON_FMT_INT</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"age\"</span><span class=\"token punctuation\">)</span> <span class=\"token string\">\"}\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"marcus\"</span><span class=\"token punctuation\">,</span> <span class=\"token number\">25</span><span class=\"token punctuation\">)</span></code></pre>\n<p>You still need to manually write the values to the left side, but at least you can more easily\nkeep mental note of all the types when reading the manually written json strings. As well as\nbeing sure that you have not forgotten to escape <code>&quot;</code> or <code>:</code> somewhere.</p>\n<ul>\n<li>Pros: Much less error prone than writing json purely by hand</li>\n<li>Cons: Still more error prone than using an actual json library like cJSON</li>\n</ul>\n<p>To use this micro library, just copy these code below into a file named <code>json_fmt.h</code>.</p>\n<pre class=\"language-c\"><code class=\"language-c\"><span class=\"token comment\">/*\n    json_fmt.h (2025-05-21)\n    A C Micro Formatting Library for manually writing json strings using printf\n    e.g. printf(\"{\"JSON_FMT_STR(\"user\")\", \"JSON_FMT_INT(\"age\")\"}\", \"marcus\", 25)\n\n    # MIT License\n\n    Copyright (c) 2025 Brian Khuu\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n  */</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">ifndef</span> <span class=\"token expression\">JSON_FMT_H</span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name\">JSON_FMT_H</span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name function\">JSON_FMT_KEY</span><span class=\"token expression\"><span class=\"token punctuation\">(</span>KEY<span class=\"token punctuation\">)</span> </span><span class=\"token string\">\"\\\"\"</span> <span class=\"token expression\">KEY </span><span class=\"token string\">\"\\\"\"</span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name function\">JSON_FMT</span><span class=\"token expression\"><span class=\"token punctuation\">(</span>KEY<span class=\"token punctuation\">,</span> FMT<span class=\"token punctuation\">)</span> <span class=\"token function\">JSON_FMT_KEY</span><span class=\"token punctuation\">(</span>KEY<span class=\"token punctuation\">)</span> </span><span class=\"token string\">\":\"</span> <span class=\"token expression\">FMT</span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name function\">JSON_FMT_STR</span><span class=\"token expression\"><span class=\"token punctuation\">(</span>KEY<span class=\"token punctuation\">)</span> <span class=\"token function\">JSON_FMT</span><span class=\"token punctuation\">(</span>KEY<span class=\"token punctuation\">,</span> </span><span class=\"token string\">\"\\\"%s\\\"\"</span><span class=\"token expression\"><span class=\"token punctuation\">)</span></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name function\">JSON_FMT_INT</span><span class=\"token expression\"><span class=\"token punctuation\">(</span>KEY<span class=\"token punctuation\">)</span> <span class=\"token function\">JSON_FMT</span><span class=\"token punctuation\">(</span>KEY<span class=\"token punctuation\">,</span> </span><span class=\"token string\">\"%d\"</span><span class=\"token expression\"><span class=\"token punctuation\">)</span></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name function\">JSON_FMT_FLT</span><span class=\"token expression\"><span class=\"token punctuation\">(</span>KEY<span class=\"token punctuation\">)</span> <span class=\"token function\">JSON_FMT</span><span class=\"token punctuation\">(</span>KEY<span class=\"token punctuation\">,</span> </span><span class=\"token string\">\"%lf\"</span><span class=\"token expression\"><span class=\"token punctuation\">)</span></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name function\">JSON_FMT_VAL</span><span class=\"token expression\"><span class=\"token punctuation\">(</span>KEY<span class=\"token punctuation\">)</span> <span class=\"token function\">JSON_FMT</span><span class=\"token punctuation\">(</span>KEY<span class=\"token punctuation\">,</span> </span><span class=\"token string\">\"%s\"</span><span class=\"token expression\"><span class=\"token punctuation\">)</span></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name function\">JSON_VAL_LIT</span><span class=\"token expression\"><span class=\"token punctuation\">(</span>STR<span class=\"token punctuation\">)</span> </span><span class=\"token string\">\"\\\"\"</span> <span class=\"token expression\">STR </span><span class=\"token string\">\"\\\"\"</span> <span class=\"token comment\">///&lt; Note that STR must be json escaped </span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name\">JSON_VAL_STR</span> <span class=\"token string\">\"\\\"%s\\\"\"</span> <span class=\"token comment\">///&lt; Note that %s must be json escaped </span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name\">JSON_VAL_TRUE</span> <span class=\"token string\">\"true\"</span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name\">JSON_VAL_FALSE</span> <span class=\"token string\">\"false\"</span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name\">JSON_VAL_NULL</span> <span class=\"token string\">\"null\"</span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name function\">JSON_VAL_BOOL</span><span class=\"token expression\"><span class=\"token punctuation\">(</span>VAL<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">(</span>VAL <span class=\"token operator\">?</span> JSON_VAL_TRUE <span class=\"token operator\">:</span> JSON_VAL_FALSE<span class=\"token punctuation\">)</span></span></span>\n<span class=\"token keyword\">static</span> <span class=\"token keyword\">inline</span> <span class=\"token keyword\">char</span> <span class=\"token operator\">*</span><span class=\"token function\">json_fmt_escaped_string</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">char</span> <span class=\"token operator\">*</span>buffer<span class=\"token punctuation\">,</span> <span class=\"token keyword\">const</span> <span class=\"token keyword\">unsigned</span> <span class=\"token keyword\">long</span> buffer_size<span class=\"token punctuation\">,</span> <span class=\"token keyword\">const</span> <span class=\"token keyword\">char</span> <span class=\"token operator\">*</span>str<span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span>\n    <span class=\"token comment\">// This escapes string for safe inclusion in json string (Ref: https://www.json.org/img/string.png)</span>\n    <span class=\"token keyword\">char</span> esc_char<span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span><span class=\"token char\">'\\\"'</span><span class=\"token punctuation\">,</span> <span class=\"token char\">'\\\\'</span><span class=\"token punctuation\">,</span> <span class=\"token char\">'/'</span><span class=\"token punctuation\">,</span> <span class=\"token char\">'\\b'</span><span class=\"token punctuation\">,</span> <span class=\"token char\">'\\f'</span><span class=\"token punctuation\">,</span> <span class=\"token char\">'\\n'</span><span class=\"token punctuation\">,</span> <span class=\"token char\">'\\r'</span><span class=\"token punctuation\">,</span> <span class=\"token char\">'\\t'</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">char</span> alt_char<span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span><span class=\"token char\">'\"'</span><span class=\"token punctuation\">,</span> <span class=\"token char\">'\\\\'</span><span class=\"token punctuation\">,</span> <span class=\"token char\">'/'</span><span class=\"token punctuation\">,</span> <span class=\"token char\">'b'</span><span class=\"token punctuation\">,</span> <span class=\"token char\">'f'</span><span class=\"token punctuation\">,</span> <span class=\"token char\">'n'</span><span class=\"token punctuation\">,</span> <span class=\"token char\">'r'</span><span class=\"token punctuation\">,</span> <span class=\"token char\">'t'</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">int</span> char_count <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">;</span> <span class=\"token operator\">*</span>str <span class=\"token operator\">&amp;&amp;</span> <span class=\"token punctuation\">(</span>char_count <span class=\"token operator\">&lt;</span> buffer_size <span class=\"token operator\">-</span> <span class=\"token number\">3</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> str<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">const</span> <span class=\"token keyword\">char</span> ch <span class=\"token operator\">=</span> <span class=\"token operator\">*</span>str<span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> i <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>esc_char<span class=\"token punctuation\">)</span> <span class=\"token operator\">/</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>esc_char<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span>\n        <span class=\"token punctuation\">{</span>\n            <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>ch <span class=\"token operator\">==</span> esc_char<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n            <span class=\"token punctuation\">{</span>\n                buffer<span class=\"token punctuation\">[</span>char_count<span class=\"token operator\">++</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token char\">'\\\\'</span><span class=\"token punctuation\">;</span>\n                buffer<span class=\"token punctuation\">[</span>char_count<span class=\"token operator\">++</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> alt_char<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                <span class=\"token keyword\">goto</span> escaped_character_applied<span class=\"token punctuation\">;</span>\n            <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">}</span>\n        buffer<span class=\"token punctuation\">[</span>char_count<span class=\"token operator\">++</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> ch<span class=\"token punctuation\">;</span>\n\n    escaped_character_applied<span class=\"token operator\">:</span>\n        <span class=\"token keyword\">continue</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    buffer<span class=\"token punctuation\">[</span>char_count<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token char\">'\\0'</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">return</span> buffer<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">endif</span></span></code></pre>\n<p>For example of how you can use this in your project, have a look at this example <code>json_fmt_demo.c</code></p>\n<pre class=\"language-c\"><code class=\"language-c\"><span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;stdio.h></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">\"json_fmt.h\"</span></span>\n<span class=\"token keyword\">int</span> <span class=\"token function\">main</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">char</span> buffer<span class=\"token punctuation\">[</span><span class=\"token number\">200</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Escaped String 1: \\\"%s\\\"\\n\"</span><span class=\"token punctuation\">,</span> <span class=\"token function\">json_fmt_escaped_string</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"Hello \\\"World\\\"!\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Escaped String 2: \\\"%s\\\"\\n\"</span><span class=\"token punctuation\">,</span> <span class=\"token function\">json_fmt_escaped_string</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"This is a line\\n And a newline\\n\\tplus tabs\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Escaped String 3: \\\"%s\\\"\\n\"</span><span class=\"token punctuation\">,</span> <span class=\"token function\">json_fmt_escaped_string</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>buffer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"Backslash \\\\ and forward slash /\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Formatted JSON (String): {\"</span> <span class=\"token function\">JSON_FMT_STR</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"name\"</span><span class=\"token punctuation\">)</span> <span class=\"token string\">\"}\\n\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"Alice\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Formatted JSON (Integer): {\"</span> <span class=\"token function\">JSON_FMT_INT</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"age\"</span><span class=\"token punctuation\">)</span> <span class=\"token string\">\"}\\n\"</span><span class=\"token punctuation\">,</span> <span class=\"token number\">30</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Formatted JSON (Float): {\"</span> <span class=\"token function\">JSON_FMT_FLT</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"height\"</span><span class=\"token punctuation\">)</span> <span class=\"token string\">\"}\\n\"</span><span class=\"token punctuation\">,</span> <span class=\"token number\">5.9</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Formatted JSON (Bool=true): {\"</span> <span class=\"token function\">JSON_FMT_VAL</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"ready\"</span><span class=\"token punctuation\">)</span> <span class=\"token string\">\"}\\n\"</span><span class=\"token punctuation\">,</span> <span class=\"token function\">JSON_VAL_BOOL</span><span class=\"token punctuation\">(</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Formatted JSON (Bool=false): {\"</span> <span class=\"token function\">JSON_FMT_VAL</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"ready\"</span><span class=\"token punctuation\">)</span> <span class=\"token string\">\"}\\n\"</span><span class=\"token punctuation\">,</span> <span class=\"token function\">JSON_VAL_BOOL</span><span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Formatted JSON (null): {\"</span> <span class=\"token function\">JSON_FMT_VAL</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"ready\"</span><span class=\"token punctuation\">)</span> <span class=\"token string\">\"}\\n\"</span><span class=\"token punctuation\">,</span> JSON_VAL_NULL<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Combined JSON: {\"</span> <span class=\"token function\">JSON_FMT_STR</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"user\"</span><span class=\"token punctuation\">)</span> <span class=\"token string\">\", \"</span> <span class=\"token function\">JSON_FMT_INT</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"age\"</span><span class=\"token punctuation\">)</span> <span class=\"token string\">\"}\\n\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"marcus\"</span><span class=\"token punctuation\">,</span> <span class=\"token number\">25</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">return</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre>\n<p>When compiled using <code>tcc -run json_fmt_demo.c</code> you will get this output:</p>\n<pre><code>Escaped String 1: &quot;Hello \\&quot;World\\&quot;!&quot;\nEscaped String 2: &quot;This is a line\\n And a newline\\n\\tplus tabs&quot;\nEscaped String 3: &quot;Backslash \\\\ and forward slash \\/&quot;\nFormatted JSON (String): {&quot;name&quot;:&quot;Alice&quot;}\nFormatted JSON (Integer): {&quot;age&quot;:30}\nFormatted JSON (Float): {&quot;height&quot;:5.900000}\nFormatted JSON (Bool=true): {&quot;ready&quot;:true}\nFormatted JSON (Bool=false): {&quot;ready&quot;:false}\nFormatted JSON (null): {&quot;ready&quot;:null}\nCombined JSON: {&quot;user&quot;:&quot;marcus&quot;, &quot;age&quot;:25}\n</code></pre>\n<p>Key thing to note, is that I've also included a small function named <code>json_fmt_escaped_string()</code>.\nThis is because while you can manually and easily sanitize integers and floats. It's much harder\nto manually sanitize each string.</p>\n<p>Just note that you will need to have a separate buffer for each call to json_fmt_escaped_string()\nto the same printf. An example which illustrate this point is shown below</p>\n<pre class=\"language-c\"><code class=\"language-c\"><span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;stdio.h></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">\"json_fmt.h\"</span></span>\n<span class=\"token keyword\">int</span> <span class=\"token function\">main</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">char</span> buffer1<span class=\"token punctuation\">[</span><span class=\"token number\">200</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">char</span> buffer2<span class=\"token punctuation\">[</span><span class=\"token number\">200</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Double Escaped String (Incorrect Usage): [ \\\"%s\\\", \\\"%s\\\" ]\\n\"</span><span class=\"token punctuation\">,</span>\n     <span class=\"token function\">json_fmt_escaped_string</span><span class=\"token punctuation\">(</span>buffer1<span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>buffer1<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"Bye \\\"World\\\"!\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n     <span class=\"token function\">json_fmt_escaped_string</span><span class=\"token punctuation\">(</span>buffer1<span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>buffer1<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"Hello \\\"World\\\"!\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Double Escaped String (Correct Usage): [ \\\"%s\\\", \\\"%s\\\" ]\\n\"</span><span class=\"token punctuation\">,</span>\n     <span class=\"token function\">json_fmt_escaped_string</span><span class=\"token punctuation\">(</span>buffer1<span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>buffer1<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"Bye \\\"World\\\"!\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n     <span class=\"token function\">json_fmt_escaped_string</span><span class=\"token punctuation\">(</span>buffer2<span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>buffer2<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"Hello \\\"World\\\"!\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token keyword\">return</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre>\n<p>Which will output this result:</p>\n<pre><code>Double Escaped String (Incorrect Usage): [ &quot;Hello \\&quot;World\\&quot;!&quot;, &quot;Hello \\&quot;World\\&quot;!&quot; ]\nDouble Escaped String (Correct Usage): [ &quot;Bye \\&quot;World\\&quot;!&quot;, &quot;Hello \\&quot;World\\&quot;!&quot; ]\n</code></pre>\n<p>Anyway hope this will be useful for you! Especially if you have a deadline!\nJust remember to revisit and update your code to use a proper json library\nwhen you get the time and space to do so!</p>\n",
      "date_published": "2025-01-22T00:00:00Z"
    },
    {
      "id": "/blog/2025/01/10/minimal-multipart-form-data-parser-in-c/",
      "url": "/blog/2025/01/10/minimal-multipart-form-data-parser-in-c/",
      "title": "Minimal Multipart/Form-Data Parser in C",
      "content_html":"<p>Created a C library for dealing with multipart form handling. It's very minimal but is going to be useful when I need to\ndeal with embedded systems occasionally with lack of memory or requirement to reduce complexity.</p>\n<hr />\n<p>To give it a shot head to <a href=\"https://github.com/mofosyne/minimal-multipart-form-data-parser-c\">https://github.com/mofosyne/minimal-multipart-form-data-parser-c</a></p>\n<p>The interface will be quite simple, like below</p>\n<pre class=\"language-c\"><code class=\"language-c\"><span class=\"token keyword\">int</span> c<span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">static</span> MinimalMultipartParserContext state <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span><span class=\"token number\">0</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>c <span class=\"token operator\">=</span> <span class=\"token function\">getc</span><span class=\"token punctuation\">(</span><span class=\"token constant\">stdin</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">!=</span> <span class=\"token constant\">EOF</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span>\n    <span class=\"token comment\">// Processor handles incoming stream character by character</span>\n    <span class=\"token keyword\">const</span> MultipartParserEvent event <span class=\"token operator\">=</span> <span class=\"token function\">minimal_multipart_parser_process</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>state<span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">char</span><span class=\"token punctuation\">)</span>c<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token comment\">// Handle Special Events</span>\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>event <span class=\"token operator\">==</span> MultipartParserEvent_DataBufferAvailable<span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        <span class=\"token comment\">// Data Available To Receive</span>\n        <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">unsigned</span> <span class=\"token keyword\">int</span> j <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> j <span class=\"token operator\">&lt;</span> <span class=\"token function\">minimal_multipart_parser_get_data_size</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>state<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> j<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span>\n        <span class=\"token punctuation\">{</span>\n            <span class=\"token keyword\">const</span> <span class=\"token keyword\">char</span> rx <span class=\"token operator\">=</span> <span class=\"token function\">minimal_multipart_parser_get_data_buffer</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>state<span class=\"token punctuation\">)</span><span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n            <span class=\"token comment\">// Output received data</span>\n            <span class=\"token function\">putc</span><span class=\"token punctuation\">(</span>rx<span class=\"token punctuation\">,</span> <span class=\"token constant\">stdout</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n    <span class=\"token keyword\">else</span> <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>event <span class=\"token operator\">==</span> MultipartParserEvent_DataStreamCompleted<span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        <span class=\"token comment\">// Data Stream Finished</span>\n        <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token comment\">// Check if file has been received</span>\n<span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token function\">minimal_multipart_parser_is_file_received</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>state<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span>\n    <span class=\"token comment\">// File Received Successfully</span>\n<span class=\"token punctuation\">}</span>\n<span class=\"token keyword\">else</span>\n<span class=\"token punctuation\">{</span>\n    <span class=\"token comment\">// File Reception Failed</span>\n<span class=\"token punctuation\">}</span></code></pre>\n<p>But I think what would be more interesting to other readers here is other alternatives to consider\nif they want to solve this issue of multipart form data extraction.</p>\n<p>Did a bit of research and these are what I found:</p>\n<ul>\n<li>\n<p><a href=\"https://github.com/fremouw/multipart\">fremouw/multipart</a></p>\n<ul>\n<li>Does not appear to use malloc</li>\n<li>Need all post data upfront, the multipart_post_t struct only contains pointers to the original data; not delimited with \\0.</li>\n<li>Parses name, filename and content type</li>\n<li>Intended for ESP8266 using ESP8266_RTOS_SDK</li>\n<li><a href=\"https://github.com/fremouw/multipart/issues/1#issuecomment-2603247235\">Project considered complete according to Fremouw</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"https://github.com/iafonov/multipart-parser-c\">iafonov/multipart-parser-c</a></p>\n<ul>\n<li>Uses malloc</li>\n<li>Uses callback functions on each data reception</li>\n<li>You need to parse <code>Content-Type</code> from the response head yourself to get the boundary\n<ul>\n<li>This is because the init function of that implementation requires it.</li>\n<li>Ours simply assumes that the first line of this form <code>\\r\\n--BOUNDARY\\r\\n</code> is the boundary which is a safe assumption to make</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>\n<p><a href=\"https://github.com/francoiscolas/multipart-parser\">francoiscolas/multipart-parser</a></p>\n<ul>\n<li>Does not appear to use malloc</li>\n<li>Uses callback functions on each data reception</li>\n<li>Validates and throws an error if not of the exact form. Ours doesn't not for code size consideration.</li>\n<li>You need to parse <code>Content-Type</code> from the response head yourself to get the boundary\n<ul>\n<li>This is because the init function of that implementation requires it.</li>\n<li>Ours simply assumes that the first line of this form <code>\\r\\n--BOUNDARY\\r\\n</code> is the boundary which is a safe assumption to make</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>\n<p><a href=\"https://github.com/abiiranathan/libmultipart\">abiiranathan/libmultipart</a></p>\n<ul>\n<li>Uses malloc</li>\n<li>Assumes you have already stored the whole request body in memory, ours will process the http request byte by byte.</li>\n<li>But has extra features and validation for processing filenames, mimetype, etc...</li>\n</ul>\n</li>\n</ul>\n",
      "date_published": "2025-01-10T00:00:00Z"
    },
    {
      "id": "/blog/2024/09/17/playing-around-with-digikey-api/",
      "url": "/blog/2024/09/17/playing-around-with-digikey-api/",
      "title": "Digikey Basic Product Search Script (Targeting Digikey API v4)",
      "content_html":"<p>This is a digikey api v4 script that is focused only on just the flow needed to get product information.\n(FYI I'm running this script in a ubuntu linux context, so it has not been tested on windows or mac)</p>\n<p>Recommend Reading:</p>\n<ul>\n<li><a href=\"https://developer.digikey.com/documentation\">https://developer.digikey.com/documentation</a>\n<ul>\n<li>Section &quot;OAuth 20: 2 Legged Flow&quot; has good information on basic authnetic</li>\n</ul>\n</li>\n</ul>\n<p>Design Principle: This script is written to be self contained besides requests and for each callout function to be composable, bu lacks much of more advance oauth implementation like token caching.</p>\n<p>Also this is restricted to sandboxed api at the moment... however this is okay as this was done as a learning exercise in addition to being for one-off internal projects.</p>\n<p>Other Similar Code:</p>\n<ul>\n<li><a href=\"https://github.com/alvarop/dkbc/blob/master/dkbc/dkbc.py\">https://github.com/alvarop/dkbc/blob/master/dkbc/dkbc.py</a>\n<ul>\n<li>Just found this while coding this up which was very helpful in figuring out what I was missing</li>\n</ul>\n</li>\n<li><a href=\"https://github.com/peeter123/digikey-api\">https://github.com/peeter123/digikey-api</a>\n<ul>\n<li>Previously tried to use this, but hit this issue <a href=\"https://github.com/peeter123/digikey-api/issues/48\">Remove distutils #48</a>. I could have tried to figure it out... but really didn't need all these features of that repo... and would rather something more standalone.</li>\n</ul>\n</li>\n</ul>\n<p>Anyway uploaded this script to gist <a href=\"https://gist.github.com/mofosyne/e15bb122024ff97ecc707dac68ab92b5\">https://gist.github.com/mofosyne/e15bb122024ff97ecc707dac68ab92b5</a> and to this page so people can use this if needed to solve their problems. If you do, then let me know that it helped you!</p>\n<p>Also by the way, I attempted to exclude the authorisation token because the <a href=\"https://developer.digikey.com/products/product-information-v4/productsearch/keywordsearch?prod=false\">https://developer.digikey.com/products/product-information-v4/productsearch/keywordsearch?prod=false</a> page for the keyword search didn't have a red required flag next to it... but it turns out you still do need it in addition to the <code>X-DIGIKEY-Client-Id</code> which is extremely annoying... but it is what it is. Its working at least for me. Just don't forget to load in your client ID and secret to the bash enviroment.</p>\n<pre class=\"language-python\"><code class=\"language-python\"><span class=\"token comment\">#!/usr/bin/env python3</span>\n\n<span class=\"token comment\"># digikey_api_v4_product_search.py</span>\n<span class=\"token comment\"># Digikey Basic Product Search Script (Targeting Digikey API v4)</span>\n<span class=\"token comment\"># By Brian Khuu 2024</span>\n\n<span class=\"token comment\"># This is a digikey api v4 script that is focused only on just the flow needed to get product information.</span>\n<span class=\"token comment\"># Recommend Reading:</span>\n<span class=\"token comment\">#   - https://developer.digikey.com/documentation</span>\n<span class=\"token comment\">#       - Section \"OAuth 20: 2 Legged Flow\" has good information on basic authnetic</span>\n\n<span class=\"token comment\"># Design Principle: This script is written to be self contained besides requests and for each callout function to be composable</span>\n<span class=\"token comment\">#                   This lacks much of more advance oauth implementation like token caching.</span>\n<span class=\"token comment\">#                   Also this is restricted to sandboxed api at the moment...</span>\n<span class=\"token comment\">#                   However this is okay as this was done as a learning exercise in addition to being for one-off internal projects.</span>\n\n<span class=\"token comment\"># Other Similar Code:</span>\n<span class=\"token comment\">#    - https://github.com/alvarop/dkbc/blob/master/dkbc/dkbc.py</span>\n<span class=\"token comment\">#         - Just found this while coding this up which was very helpful in figuring out what I was missing</span>\n\n<span class=\"token keyword\">import</span> os\n<span class=\"token keyword\">import</span> json\n<span class=\"token keyword\">import</span> requests\n\nDIGIKEY_CLIENT_ID<span class=\"token operator\">=</span>os<span class=\"token punctuation\">.</span>getenv<span class=\"token punctuation\">(</span><span class=\"token string\">\"DIGIKEY_CLIENT_ID\"</span><span class=\"token punctuation\">)</span>\nDIGIKEY_CLIENT_SECRET<span class=\"token operator\">=</span>os<span class=\"token punctuation\">.</span>getenv<span class=\"token punctuation\">(</span><span class=\"token string\">\"DIGIKEY_CLIENT_SECRET\"</span><span class=\"token punctuation\">)</span>\n\nDIGIKEY_AUTH_URL_V4  <span class=\"token operator\">=</span> <span class=\"token string\">'https://sandbox-api.digikey.com/v1/oauth2/authorize'</span>\nDIGIKEY_TOKEN_URL_V4 <span class=\"token operator\">=</span> <span class=\"token string\">'https://sandbox-api.digikey.com/v1/oauth2/token'</span>\nDIGIKEY_PRODUCT_SEARCH_URL_V4 <span class=\"token operator\">=</span> <span class=\"token string\">'https://sandbox-api.digikey.com/products/v4/search/keyword'</span>\n\n<span class=\"token comment\"># Sanity Check That Authorisation Details Was Provided</span>\n<span class=\"token keyword\">if</span> <span class=\"token keyword\">not</span> DIGIKEY_CLIENT_ID <span class=\"token keyword\">or</span> <span class=\"token keyword\">not</span> DIGIKEY_CLIENT_SECRET<span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Missing client id or secret\"</span><span class=\"token punctuation\">)</span>\n    quit<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">def</span> <span class=\"token function\">oauthV2_get_simple_access_token</span><span class=\"token punctuation\">(</span>url<span class=\"token punctuation\">,</span> client_id<span class=\"token punctuation\">,</span> client_secret<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token comment\"># Get the simple access token required for 2 Legged Authorization OAutV2.0 flow</span>\n    <span class=\"token comment\"># This is typically used for basic search and retreival of publically avaliable information</span>\n    response <span class=\"token operator\">=</span> requests<span class=\"token punctuation\">.</span>post<span class=\"token punctuation\">(</span>\n        url<span class=\"token punctuation\">,</span>\n        data<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span>\n            <span class=\"token string\">\"client_id\"</span><span class=\"token punctuation\">:</span> client_id<span class=\"token punctuation\">,</span>\n            <span class=\"token string\">\"client_secret\"</span><span class=\"token punctuation\">:</span> client_secret<span class=\"token punctuation\">,</span>\n            <span class=\"token string\">\"grant_type\"</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"client_credentials\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">return</span> response<span class=\"token punctuation\">.</span>json<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">def</span> <span class=\"token function\">oauthv2_product_search</span><span class=\"token punctuation\">(</span>url<span class=\"token punctuation\">,</span> client_id<span class=\"token punctuation\">,</span> token<span class=\"token punctuation\">,</span> keyword<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token comment\"># Dev Note: Why did I not just place the data?</span>\n    <span class=\"token comment\"># https://stackoverflow.com/questions/15737434/python-requests-module-urlencoding-json-data</span>\n    data_payload <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token string\">\"Keywords\"</span><span class=\"token punctuation\">:</span> <span class=\"token builtin\">str</span><span class=\"token punctuation\">(</span>keyword<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">}</span>\n    response <span class=\"token operator\">=</span> requests<span class=\"token punctuation\">.</span>post<span class=\"token punctuation\">(</span>\n        url<span class=\"token punctuation\">,</span>\n        headers <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>            \n            <span class=\"token string\">\"X-DIGIKEY-Client-Id\"</span><span class=\"token punctuation\">:</span> client_id<span class=\"token punctuation\">,</span>\n            <span class=\"token string\">\"authorization\"</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Bearer {access_token}\"</span><span class=\"token punctuation\">.</span><span class=\"token builtin\">format</span><span class=\"token punctuation\">(</span>access_token<span class=\"token operator\">=</span>token<span class=\"token punctuation\">.</span>get<span class=\"token punctuation\">(</span><span class=\"token string\">\"access_token\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n            <span class=\"token string\">\"content-type\"</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"application/json\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token string\">\"accept\"</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"application/json\"</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n        data <span class=\"token operator\">=</span> json<span class=\"token punctuation\">.</span>dumps<span class=\"token punctuation\">(</span>data_payload<span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">return</span> response<span class=\"token punctuation\">.</span>json<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\noauth_token <span class=\"token operator\">=</span> oauthV2_get_simple_access_token<span class=\"token punctuation\">(</span>DIGIKEY_TOKEN_URL_V4<span class=\"token punctuation\">,</span> DIGIKEY_CLIENT_ID<span class=\"token punctuation\">,</span> DIGIKEY_CLIENT_SECRET<span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>oauth_token<span class=\"token punctuation\">)</span>\n\nsearch_result <span class=\"token operator\">=</span> oauthv2_product_search<span class=\"token punctuation\">(</span>DIGIKEY_PRODUCT_SEARCH_URL_V4<span class=\"token punctuation\">,</span> DIGIKEY_CLIENT_ID<span class=\"token punctuation\">,</span> oauth_token<span class=\"token punctuation\">,</span> <span class=\"token string\">\"MCP2221A-I/SL-ND\"</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>json<span class=\"token punctuation\">.</span>dumps<span class=\"token punctuation\">(</span>search_result<span class=\"token punctuation\">,</span> indent<span class=\"token operator\">=</span><span class=\"token number\">4</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span></code></pre>\n",
      "date_published": "2024-09-17T00:00:00Z"
    },
    {
      "id": "/blog/2024/05/20/playing-around-with-linux-posix-file-descriptors/",
      "url": "/blog/2024/05/20/playing-around-with-linux-posix-file-descriptors/",
      "title": "Playing Around With Linux / POSIX File Descriptors in C",
      "content_html":"<p>Was helping out a bit with this <a href=\"https://github.com/ggerganov/llama.cpp/pull/6923#issuecomment-2118996178\">PR</a>\nwhere one user was trying to get rid of special token being outputted in llama.cpp when being run in shell script\ncontext. One approach I thought was to allow for outputting the control tokens into a separate out of band stream\nrather than mixed into stdout.</p>\n<p>Ultimately we found a different approach that didn't require attaching an out of band stream approach.</p>\n<p>Nevertheless, I'm interested in understanding more about the non-standard pipes and how to use it in linux.\nWhich would allow for multiple pipe output and input of a program besides stdout and stdin.</p>\n<hr />\n<p>Within C standard library <code>FILE</code> stream add buffering and portability for text and binary I/O,\nfor ease of use in standard C programs and by default on program initialization stdin, stdout\nand stderr <code>FILE</code> stream is opened and associated with either a File Descriptor (Linux/Unix)\nor a <code>HANDLE</code> for Windows.</p>\n<p>File descriptors on the other side provides direct low level access to system resources like files,\npipes and sockets.</p>\n<p>The key thing to note is that this is purely a linux facility and windows doesn't\nhave this capability as this write up is focused on utilizing <a href=\"https://en.wikipedia.org/wiki/File_descriptor\">File descriptor</a>. Instead Windows reply on</p>\n<p>These File Descriptors can be interacted using system calls provided by <code>unistd.h</code> library's\n<code>pipe()</code>, <code>fork()</code> and other Unix-centric IPC mechanism.</p>\n<table>\n<thead>\n<tr>\n<th>Unix File Descriptor</th>\n<th>Windows API HANDLE</th>\n<th>Standard Stream</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>0</td>\n<td>GetStdHandle(STD_INPUT_HANDLE)</td>\n<td>Standard Input</td>\n</tr>\n<tr>\n<td>1</td>\n<td>GetStdHandle(STD_OUTPUT_HANDLE)</td>\n<td>Standard Output</td>\n</tr>\n<tr>\n<td>2</td>\n<td>GetStdHandle(STD_ERROR_HANDLE)</td>\n<td>Standard Error</td>\n</tr>\n<tr>\n<td>3</td>\n<td>3</td>\n<td>-</td>\n</tr>\n<tr>\n<td>4</td>\n<td>4</td>\n<td>-</td>\n</tr>\n<tr>\n<td>etc...</td>\n<td>etc...</td>\n<td>-</td>\n</tr>\n</tbody>\n</table>\n<h2>Experimenting With Pipes</h2>\n<p>These C test program was run under <code>Linux Mint 21.3 x86_64</code>.</p>\n<h3>Print Out Attachments Status</h3>\n<pre class=\"language-c\"><code class=\"language-c\"><span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;stdio.h></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;unistd.h></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;fcntl.h></span></span>\n<span class=\"token keyword\">int</span> <span class=\"token function\">main</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> i <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;</span> <span class=\"token number\">10</span><span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Output descriptor %i is %s\\n\"</span><span class=\"token punctuation\">,</span> i<span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span><span class=\"token function\">fcntl</span><span class=\"token punctuation\">(</span>i<span class=\"token punctuation\">,</span> F_GETFL<span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">?</span> <span class=\"token string\">\"Not Attached\"</span> <span class=\"token operator\">:</span> <span class=\"token string\">\"Attached\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    <span class=\"token keyword\">return</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre>\n<p>Output on bash console:</p>\n<pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token variable\">$tcc</span> <span class=\"token parameter variable\">-run</span> ATTACHCHECK.c\nOutput descriptor <span class=\"token number\">0</span> is Attached\nOutput descriptor <span class=\"token number\">1</span> is Attached\nOutput descriptor <span class=\"token number\">2</span> is Attached\nOutput descriptor <span class=\"token number\">3</span> is Not Attached\nOutput descriptor <span class=\"token number\">4</span> is Not Attached\nOutput descriptor <span class=\"token number\">5</span> is Not Attached\nOutput descriptor <span class=\"token number\">6</span> is Not Attached\nOutput descriptor <span class=\"token number\">7</span> is Not Attached\nOutput descriptor <span class=\"token number\">8</span> is Not Attached\nOutput descriptor <span class=\"token number\">9</span> is Not Attached\n\n<span class=\"token variable\">$tcc</span> <span class=\"token parameter variable\">-run</span> ATTACHCHECK.c <span class=\"token operator\"><span class=\"token file-descriptor important\">3</span>></span>/dev/null  <span class=\"token operator\"><span class=\"token file-descriptor important\">6</span>></span>/dev/null\nOutput descriptor <span class=\"token number\">0</span> is Attached\nOutput descriptor <span class=\"token number\">1</span> is Attached\nOutput descriptor <span class=\"token number\">2</span> is Attached\nOutput descriptor <span class=\"token number\">3</span> is Attached\nOutput descriptor <span class=\"token number\">4</span> is Not Attached\nOutput descriptor <span class=\"token number\">5</span> is Not Attached\nOutput descriptor <span class=\"token number\">6</span> is Attached\nOutput descriptor <span class=\"token number\">7</span> is Not Attached\nOutput descriptor <span class=\"token number\">8</span> is Not Attached\nOutput descriptor <span class=\"token number\">9</span> is Not Attached</code></pre>\n<h2>Single Attach Test</h2>\n<pre class=\"language-c\"><code class=\"language-c\"><span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;stdio.h></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;unistd.h></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;fcntl.h></span></span>\n<span class=\"token keyword\">int</span> <span class=\"token function\">main</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Output descriptor 3 is %s\\n\"</span><span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span><span class=\"token function\">fcntl</span><span class=\"token punctuation\">(</span><span class=\"token number\">3</span><span class=\"token punctuation\">,</span> F_GETFL<span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">?</span> <span class=\"token string\">\"Not Attached\"</span> <span class=\"token operator\">:</span> <span class=\"token string\">\"Attached\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">return</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre>\n<p>Output:</p>\n<pre class=\"language-bash\"><code class=\"language-bash\">$ tcc <span class=\"token parameter variable\">-run</span> ATTACHTEST.c <span class=\"token operator\"><span class=\"token file-descriptor important\">3</span>></span>a\nOutput descriptor <span class=\"token number\">3</span> is Attached\n$ tcc <span class=\"token parameter variable\">-run</span> ATTACHTEST.c\nOutput descriptor <span class=\"token number\">3</span> is Not Attached</code></pre>\n<h2>Testing File Descriptor 0 behavior</h2>\n<pre class=\"language-c\"><code class=\"language-c\"><span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;stdio.h></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;stdlib.h></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;unistd.h></span></span>\n\n<span class=\"token keyword\">int</span> <span class=\"token function\">main</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">char</span> outbuff<span class=\"token punctuation\">[</span><span class=\"token number\">1000</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span><span class=\"token number\">0</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">size_t</span> outbuff_length <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n\n    FILE <span class=\"token operator\">*</span>file_f <span class=\"token operator\">=</span> <span class=\"token function\">fdopen</span><span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"r\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>file_f<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">char</span> <span class=\"token operator\">*</span>buff <span class=\"token operator\">=</span> <span class=\"token constant\">NULL</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">char</span> inbuff<span class=\"token punctuation\">[</span><span class=\"token number\">1000</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span><span class=\"token number\">0</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n        <span class=\"token class-name\">ssize_t</span> nread <span class=\"token operator\">=</span> <span class=\"token function\">read</span><span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span> inbuff<span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>inbuff<span class=\"token punctuation\">)</span> <span class=\"token operator\">-</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token comment\">// Remove newline character if present</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>nread <span class=\"token operator\">></span> <span class=\"token number\">0</span> <span class=\"token operator\">&amp;&amp;</span> inbuff<span class=\"token punctuation\">[</span>nread <span class=\"token operator\">-</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token char\">'\\n'</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n            inbuff<span class=\"token punctuation\">[</span>nread <span class=\"token operator\">-</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token char\">'\\0'</span><span class=\"token punctuation\">;</span>\n            nread<span class=\"token operator\">--</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// Decrement nread to exclude the newline character</span>\n        <span class=\"token punctuation\">}</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>nread <span class=\"token operator\">!=</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n            outbuff_length <span class=\"token operator\">=</span> <span class=\"token function\">snprintf</span><span class=\"token punctuation\">(</span>outbuff<span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>outbuff<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"Tried to read 0 got '%s' (%ld)\\n\"</span><span class=\"token punctuation\">,</span> inbuff<span class=\"token punctuation\">,</span> nread<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span>\n            outbuff_length <span class=\"token operator\">=</span> <span class=\"token function\">snprintf</span><span class=\"token punctuation\">(</span>outbuff<span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>outbuff<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"Tried to read 0 but got no input\\n\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n        <span class=\"token function\">free</span><span class=\"token punctuation\">(</span>buff<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span>\n        outbuff_length <span class=\"token operator\">=</span> <span class=\"token function\">snprintf</span><span class=\"token punctuation\">(</span>outbuff<span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>outbuff<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"Tried to read 0 but cannot open file descriptor\\n\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n    <span class=\"token function\">write</span><span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span> outbuff<span class=\"token punctuation\">,</span> outbuff_length<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">write</span><span class=\"token punctuation\">(</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> outbuff<span class=\"token punctuation\">,</span> outbuff_length<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token keyword\">return</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre>\n<p>When run directly the program is able to read the piped in 'hello' as expected at File Descriptor 0.</p>\n<pre class=\"language-bash\"><code class=\"language-bash\">$ <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"hello\"</span> <span class=\"token operator\">|</span> tcc <span class=\"token parameter variable\">-run</span> INOUT.c\nTried to <span class=\"token builtin class-name\">read</span> <span class=\"token number\">0</span> got <span class=\"token string\">'hello'</span> <span class=\"token punctuation\">(</span><span class=\"token number\">5</span><span class=\"token punctuation\">)</span></code></pre>\n<p>Piping in to File Descriptor 0 via a FIFO pipe works as expected as well.</p>\n<pre class=\"language-bash\"><code class=\"language-bash\">$ <span class=\"token function\">mkfifo</span> fd0\n\n$ <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"input_0\"</span> <span class=\"token operator\">></span> fd0 <span class=\"token operator\">&amp;</span>\n<span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token number\">373014</span>\n\n$ tcc <span class=\"token parameter variable\">-run</span> INOUT.c <span class=\"token operator\"><span class=\"token file-descriptor important\">0</span>&lt;</span>fd0\nTried to <span class=\"token builtin class-name\">read</span> <span class=\"token number\">0</span> got <span class=\"token string\">'input_0'</span> <span class=\"token punctuation\">(</span><span class=\"token number\">7</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span>+  Done                    <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"input_0\"</span> <span class=\"token operator\">></span> fd0</code></pre>\n<p>However if you try to pipe out data from File Descriptor 0... it will hang\nas the read() system call fails/blocks indefinitely because there is no valid\ndata source for stdin.</p>\n<pre class=\"language-bash\"><code class=\"language-bash\">$ <span class=\"token function\">mkfifo</span> fd0\n\n$ <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"input_0\"</span> <span class=\"token operator\">></span> fd0 <span class=\"token operator\">&amp;</span>\n<span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token number\">376622</span>\n\n$ tcc <span class=\"token parameter variable\">-run</span> INOUT.c <span class=\"token operator\"><span class=\"token file-descriptor important\">0</span>></span>fd0\n<span class=\"token punctuation\">..</span>. Program Crashes Here <span class=\"token punctuation\">..</span>.</code></pre>\n<p>Also bash will throw an error if you try to output File Descriptor 0 to a file.\nI suspect <code>0&gt;a</code> did open as an output so hence the program cannot read from\nthe piped in &quot;hello&quot;. Which means bash does not prevent me from redirecting 0 to\na file but this breaks the program logic.</p>\n<pre><code>$ echo &quot;hello&quot; | tcc -run INOUT.c 0&gt;a\nTried to read 0 but cannot open file descriptor\n</code></pre>\n<h2>Testing non standard output stream on File Description 0</h2>\n<pre class=\"language-c\"><code class=\"language-c\"><span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;stdio.h></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;stdlib.h></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;unistd.h></span></span>\n<span class=\"token keyword\">int</span> <span class=\"token function\">main</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token function\">write</span><span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"hello\\n\"</span><span class=\"token punctuation\">,</span> <span class=\"token number\">7</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">return</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre>\n<p>Output:</p>\n<pre class=\"language-bash\"><code class=\"language-bash\">$ <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"yellow\"</span> <span class=\"token operator\">|</span> tcc <span class=\"token parameter variable\">-run</span> OUTTOD0.c <span class=\"token operator\"><span class=\"token file-descriptor important\">0</span>></span>a\n\n$ <span class=\"token function\">cat</span> a\nhello</code></pre>\n<p>This indicates that it's possible to do non standard output</p>\n<h2>Detecting Attachment State</h2>\n<pre class=\"language-c\"><code class=\"language-c\"><span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;stdio.h></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">if</span> <span class=\"token expression\"><span class=\"token function\">defined</span> <span class=\"token punctuation\">(</span>__unix__<span class=\"token punctuation\">)</span> <span class=\"token operator\">||</span> <span class=\"token punctuation\">(</span><span class=\"token function\">defined</span> <span class=\"token punctuation\">(</span>__APPLE__<span class=\"token punctuation\">)</span> <span class=\"token operator\">&amp;&amp;</span> <span class=\"token function\">defined</span> <span class=\"token punctuation\">(</span>__MACH__<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;unistd.h></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">elif</span> <span class=\"token expression\"><span class=\"token function\">defined</span><span class=\"token punctuation\">(</span>_WIN32<span class=\"token punctuation\">)</span></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;io.h></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">endif</span></span>\n<span class=\"token keyword\">int</span> <span class=\"token function\">main</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">char</span> name<span class=\"token punctuation\">[</span><span class=\"token number\">1000</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span><span class=\"token number\">0</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">scanf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"%s\"</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">&amp;</span>name<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"hello %s %s\\n\"</span><span class=\"token punctuation\">,</span> name<span class=\"token punctuation\">,</span> <span class=\"token function\">isatty</span><span class=\"token punctuation\">(</span><span class=\"token function\">fileno</span><span class=\"token punctuation\">(</span><span class=\"token constant\">stdin</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">?</span> <span class=\"token string\">\"you decided to come in via terminal?\"</span> <span class=\"token operator\">:</span> <span class=\"token string\">\"you decided to come in via pipe?\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">return</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre>\n<p>Output via pipe:</p>\n<pre class=\"language-bash\"><code class=\"language-bash\">$ tcc <span class=\"token parameter variable\">-run</span> stdinattach.c <span class=\"token operator\">&lt;&lt;</span> __HEREDOC__\n$ mark\n$ __HEREDOC__\n\nhello mark you decided to come <span class=\"token keyword\">in</span> via pipe?</code></pre>\n<p>Output when manually called via interactive terminal:</p>\n<pre class=\"language-bash\"><code class=\"language-bash\">$ tcc <span class=\"token parameter variable\">-run</span> stdinattach.c <span class=\"token comment\"># Then typed in yola manually</span>\nhello yola you decided to come <span class=\"token keyword\">in</span> via terminal?</code></pre>\n<p>Anyway I hope all these examples above gives you a better sense of how this works.</p>\n",
      "date_published": "2024-05-20T00:00:00Z"
    },
    {
      "id": "/blog/2024/04/11/initialise-minimal-autotools-script/",
      "url": "/blog/2024/04/11/initialise-minimal-autotools-script/",
      "title": "Initialise Minimal Autotools Script",
      "content_html":"<p>Was aiming to get started on a small idea of a psv program to help parse markdown tables into json output.\nStudied how jq a popular json data handling tool structure it build system and found it is using autotools.</p>\n<p>To better use this means I first need to create a minimum autotool setup. To which i tend to prefer a scriptable approach to make the process a bit clearer to me (Since it ends up becoming a bit like a runbook).</p>\n<hr />\n<p>One thing to add is I quite like how jq approaches version strings in that they captured from the git tag the version name and use that to inform the autotool system the current version of this program. If you are interested, you would have a look at this script <a href=\"https://github.com/jqlang/jq/blob/master/scripts/version\">https://github.com/jqlang/jq/blob/master/scripts/version</a>  and then add this line <code>m4_define([program_version], m4_esyscmd_s([scripts/version])))</code> to replace in <code>configure.ac</code> this line <code>m4_define([program_version], [0.1])</code>.</p>\n<p>Here's the script, just copy it to a file and <code>chmod +x &lt;script name&gt;</code> in any linux based computer and it will be ready to use. Just note that I also added a <code>.gitignore</code> as I typically use git version control.</p>\n<p>Also this script contains a trivial unit test example (to ensure ease of grokkability of the build system) so you may want to check out these other unit test frameworks for it and integrate it in manually.</p>\n<ul>\n<li><a href=\"https://github.com/ThrowTheSwitch/Unity\">Unity Test</a> - This is a unit test that I have often used for embedded programming and is relatively easy to integrate in most build systems including Make and CMake.</li>\n<li><a href=\"https://nemequ.github.io/munit/#\">µnit</a> - Single source/header file and is trivial to integrate into build systems.</li>\n<li><a href=\"https://github.com/Warwolt/rktest/\">RK Test</a> A demake of google test targeting C99 by Warwolt for those who don't like the idea of writing C++ just for C code. Its a ~1k single header lib. <a href=\"https://www.reddit.com/r/C_Programming/comments/alpnvr/comment/ke7zm0q/\">Warwolt comment for reference</a></li>\n<li><a href=\"https://github.com/google/googletest\">Google Test</a> (Recommended by Warwolt as it is a straight forward library and is apparently easy to setup and write, but test codes are written in C++)</li>\n</ul>\n<p>By the way I highly recommend watching <a href=\"https://www.youtube.com/watch?v=4q_inV9M_us\">Introduction to the Autotools by David A. Wheeler</a> which would explain how autotools works at a basic level. You are also recommended to read <a href=\"https://elinux.org/images/4/43/Petazzoni.pdf\">GNU Autotools: a tutorial (Embedded Linux Conference 2016)</a> <a href=\"https://web.archive.org/web/20240401201413/https://elinux.org/images/4/43/Petazzoni.pdf\">IA Mirror</a> as Thomas Petazzoni's diagrams is pretty good.</p>\n<p>A copy of this script is also located here <a href=\"https://gist.github.com/mofosyne/21fca0eb74fbc788983c1068af92bc83\">https://gist.github.com/mofosyne/21fca0eb74fbc788983c1068af92bc83</a> for those who prefer github gist.</p>\n<pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token shebang important\">#!/bin/bash</span>\n\n<span class=\"token comment\"># INITIALIZE MINIMAL AUTOTOOLS BASED C PROGRAM (Brian Khuu 2024)</span>\n<span class=\"token comment\"># https://briankhuu.com/blog/2024/04/11/initialise-minimal-autotools-script/</span>\n\n<span class=\"token builtin class-name\">set</span> <span class=\"token parameter variable\">-euo</span> pipefail\n\n<span class=\"token comment\"># Function to display usage</span>\n<span class=\"token function-name function\">show_usage</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Usage: <span class=\"token variable\">$0</span> [PACKAGE_NAME]\"</span>\n  <span class=\"token builtin class-name\">exit</span> <span class=\"token number\">1</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token comment\"># Parse command-line arguments</span>\n<span class=\"token keyword\">if</span> <span class=\"token punctuation\">[</span> <span class=\"token string\">\"<span class=\"token variable\">$#</span>\"</span> <span class=\"token parameter variable\">-eq</span> <span class=\"token number\">0</span> <span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n  <span class=\"token builtin class-name\">read</span> <span class=\"token parameter variable\">-p</span> <span class=\"token string\">\"Enter project name: \"</span> PACKAGE_NAME\n<span class=\"token keyword\">elif</span> <span class=\"token punctuation\">[</span> <span class=\"token string\">\"<span class=\"token variable\">$#</span>\"</span> <span class=\"token parameter variable\">-eq</span> <span class=\"token number\">1</span> <span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n  <span class=\"token assign-left variable\">PACKAGE_NAME</span><span class=\"token operator\">=</span><span class=\"token string\">\"<span class=\"token variable\">$1</span>\"</span>\n<span class=\"token keyword\">else</span>\n  show_usage\n<span class=\"token keyword\">fi</span>\n\n<span class=\"token comment\"># Create project directory if it doesn't exist</span>\n<span class=\"token keyword\">if</span> <span class=\"token punctuation\">[</span> <span class=\"token operator\">!</span> <span class=\"token parameter variable\">-d</span> <span class=\"token string\">\"<span class=\"token variable\">$PACKAGE_NAME</span>\"</span> <span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n  <span class=\"token function\">mkdir</span> <span class=\"token string\">\"<span class=\"token variable\">$PACKAGE_NAME</span>\"</span>\n<span class=\"token keyword\">fi</span>\n\n<span class=\"token builtin class-name\">cd</span> <span class=\"token string\">\"<span class=\"token variable\">$PACKAGE_NAME</span>\"</span> <span class=\"token operator\">||</span> <span class=\"token builtin class-name\">exit</span> <span class=\"token number\">1</span>\n\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"== GENERATING FILES ==\"</span>\n\n<span class=\"token comment\"># Create README.md</span>\n<span class=\"token function\">cat</span> <span class=\"token operator\">&lt;&lt;</span><span class=\"token string\">EOF<span class=\"token bash punctuation\"> <span class=\"token operator\">></span>README.md</span>\n# <span class=\"token variable\">$PACKAGE_NAME</span>\n\nA minimal Autotools-based C project.\n\nQuickstart Tip: Just run \\<span class=\"token variable\"><span class=\"token variable\">`</span>./bootstrap.sh <span class=\"token operator\">&amp;&amp;</span> ./build.sh <span class=\"token operator\">&amp;&amp;</span> ./test.sh<span class=\"token punctuation\">\\</span><span class=\"token variable\">`</span></span> to build and test.\nYour executable will be located at \\<span class=\"token variable\"><span class=\"token variable\">`</span>./$PACKAGE_NAME<span class=\"token punctuation\">\\</span><span class=\"token variable\">`</span></span>.\nUse \\<span class=\"token variable\"><span class=\"token variable\">`</span>./clean.sh<span class=\"token punctuation\">\\</span> <span class=\"token operator\">&amp;&amp;</span> ./bootstrap.sh<span class=\"token punctuation\">\\</span><span class=\"token variable\">`</span></span> to reset to a clean slate.\nEOF</span>\n\n<span class=\"token comment\"># Create M4 folder</span>\n<span class=\"token function\">mkdir</span> <span class=\"token parameter variable\">-p</span> m4\n<span class=\"token function\">cat</span> <span class=\"token operator\">&lt;&lt;</span><span class=\"token string\">EOF<span class=\"token bash punctuation\"> <span class=\"token operator\">></span>m4/readme.md</span>\n# Autotools M4 Macro Directory\nThis directory contains custom or third-party macros used by Autotools.\n## Purpose\nThese macros are included in the Autotools build process via the \\<span class=\"token variable\"><span class=\"token variable\">`</span>AC_CONFIG_MACRO_DIRS<span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span>m4<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">\\</span><span class=\"token variable\">`</span></span> directive in the \\<span class=\"token variable\"><span class=\"token variable\">`</span>configure.ac<span class=\"token punctuation\">\\</span><span class=\"token variable\">`</span></span> file.\nIt is also accessible within  \\<span class=\"token variable\"><span class=\"token variable\">`</span>configure.ac<span class=\"token punctuation\">\\</span><span class=\"token variable\">`</span></span> as well as m4 does a double pass as well.\n## Usage\nEnsure to include \\<span class=\"token variable\"><span class=\"token variable\">`</span><span class=\"token parameter variable\">-I</span> m4<span class=\"token punctuation\">\\</span><span class=\"token variable\">`</span></span> in the \\<span class=\"token variable\"><span class=\"token variable\">`</span>ACLOCAL_AMFLAGS<span class=\"token punctuation\">\\</span><span class=\"token variable\">`</span></span> variable within the \\<span class=\"token variable\"><span class=\"token variable\">`</span>Makefile.am<span class=\"token punctuation\">\\</span><span class=\"token variable\">`</span></span> file to instruct \\<span class=\"token variable\"><span class=\"token variable\">`</span>aclocal<span class=\"token punctuation\">\\</span><span class=\"token variable\">`</span></span> to search for macros in this directory.\nEOF</span>\n\n<span class=\"token comment\"># Create configure.ac</span>\n<span class=\"token function\">cat</span> <span class=\"token operator\">&lt;&lt;</span><span class=\"token string\">EOF<span class=\"token bash punctuation\"> <span class=\"token operator\">></span>configure.ac</span>\nm4_define([program_version], [0.1])\nAC_INIT([<span class=\"token variable\">$PACKAGE_NAME</span>], [program_version])\nAC_PREREQ([2.65]) # Minimum version number for autoconf build system\nAC_CONFIG_SRCDIR([src/main.c]) # Ensure the main source file exists\nAC_CONFIG_HEADERS([src/config.h:config_h.in]) # Generate config header\nAC_CONFIG_AUX_DIR([build-aux]) # Put autotools auxiliary files into a seperate dir to reduce clutter\nAC_CONFIG_MACRO_DIRS([m4]) # Put autotools M4 macros files into a seperate dir to reduce clutter\nAM_INIT_AUTOMAKE([-Wall -Werror foreign subdir-objects]) # Initialize Automake with options\nAC_CONFIG_FILES([Makefile]) # Specify Makefile generation for main directory and src directory\nAC_PROG_CC # Find and set up C compiler\nAC_OUTPUT # Generate output files\nEOF</span>\n\n<span class=\"token comment\"># Create Makefile.am</span>\n<span class=\"token function\">cat</span> <span class=\"token operator\">&lt;&lt;</span><span class=\"token string\">EOF<span class=\"token bash punctuation\"> <span class=\"token operator\">></span>Makefile.am</span>\nbin_PROGRAMS = <span class=\"token variable\">$PACKAGE_NAME</span>\n<span class=\"token variable\">${PACKAGE_NAME}</span>_SOURCES = src/main.c src/hello.h\n\ncheck_PROGRAMS = unit_test\nunit_test_SOURCES = tests/unit_test.c src/hello.h\n\n# ACLOCAL_AMFLAGS specifies additional flags for aclocal.\n# -I m4: Include the m4 directory for additional macros.\n# --install: Automatically install missing macros into the system-wide directory.\nACLOCAL_AMFLAGS = -I m4 --install\nEOF</span>\n\n<span class=\"token comment\"># Create source files</span>\n<span class=\"token function\">mkdir</span> <span class=\"token parameter variable\">-p</span> src\n<span class=\"token function\">cat</span> <span class=\"token operator\">&lt;&lt;</span><span class=\"token string\">'EOF'<span class=\"token bash punctuation\"> <span class=\"token operator\">></span>src/main.c</span>\n#include &lt;stdio.h>\n#include \"config.h\"\n#include \"hello.h\"\nint main() {\n  printf(\"%s! (version: %s)\\n\", HELLO_MESSAGE, PACKAGE_VERSION);\n  return 0;\n}\nEOF</span>\n\n<span class=\"token comment\"># Create header file src/hello.h</span>\n<span class=\"token function\">cat</span> <span class=\"token operator\">&lt;&lt;</span><span class=\"token string\">'EOF'<span class=\"token bash punctuation\"> <span class=\"token operator\">></span>src/hello.h</span>\n#ifndef HELLO_H\n#define HELLO_H\n#define HELLO_MESSAGE \"Hello, world\"\n#endif /* HELLO_H */\nEOF</span>\n\n<span class=\"token comment\"># Create test source files</span>\n<span class=\"token function\">mkdir</span> <span class=\"token parameter variable\">-p</span> tests\n<span class=\"token function\">cat</span> <span class=\"token operator\">&lt;&lt;</span><span class=\"token string\">'EOF'<span class=\"token bash punctuation\"> <span class=\"token operator\">></span>tests/unit_test.c</span>\n#include &lt;stdio.h>\n#include &lt;string.h>\n#include \"config.h\"\n#include \"hello.h\"\nint main() {\n  if(strcmp(HELLO_MESSAGE, \"Hello, world\") != 0) {\n    printf(\"Unit test failed: Message does not match expected output.\\n\");\n    return 1;\n  }\n  printf(\"All Unit Test Passed\\n\");\n  return 0;\n}\nEOF</span>\n\n<span class=\"token comment\"># Create bootstrap.sh</span>\n<span class=\"token function\">cat</span> <span class=\"token operator\">&lt;&lt;</span><span class=\"token string\">EOF<span class=\"token bash punctuation\"> <span class=\"token operator\">></span>bootstrap.sh</span>\n#!/bin/bash\n# Setup Autotools Enviroment\nset -euo pipefail\necho \"== BOOTSTRAPPING ==\"\n\n# Run autoreconf to generate configure script and Makefile.in files\necho \"Running autoreconf...\"\n[ -e configure ] || autoreconf -vim\n\n# Configure and build the project\necho \"Configuring and building the project...\"\n[ -e Makefile ]  || ( ./configure &amp;&amp; make )\nEOF</span>\n<span class=\"token function\">chmod</span> +x bootstrap.sh\n\n<span class=\"token comment\"># Create build.sh</span>\n<span class=\"token function\">cat</span> <span class=\"token operator\">&lt;&lt;</span><span class=\"token string\">EOF<span class=\"token bash punctuation\"> <span class=\"token operator\">></span>build.sh</span>\n#!/bin/bash\n# Run the main program\nset -euo pipefail\necho \"== BUILD AND RUN <span class=\"token variable\">$PACKAGE_NAME</span> ==\"\nmake\n./<span class=\"token variable\">$PACKAGE_NAME</span>\nif [ <span class=\"token variable\">$?</span> -eq 0 ]; then\n    echo \"build completed.\"\nelse\n    echo \"build failed.\"\n    exit 1\nfi\nEOF</span>\n<span class=\"token function\">chmod</span> +x build.sh\n\n<span class=\"token comment\"># Create test.sh</span>\n<span class=\"token function\">cat</span> <span class=\"token operator\">&lt;&lt;</span><span class=\"token string\">EOF<span class=\"token bash punctuation\"> <span class=\"token operator\">></span>test.sh</span>\n#!/bin/bash\n# Run the unit test program\nset -euo pipefail\necho \"== BUILD AND RUN UNIT TEST ==\"\nmake check\n./unit_test\nif [ <span class=\"token variable\">$?</span> -eq 0 ]; then\n    echo \"Unit tests passed successfully.\"\nelse\n    echo \"Unit tests failed.\"\n    exit 1\nfi\nEOF</span>\n<span class=\"token function\">chmod</span> +x test.sh\n\n<span class=\"token comment\"># Create clean.sh</span>\n<span class=\"token function\">cat</span> <span class=\"token operator\">&lt;&lt;</span><span class=\"token string\">EOF<span class=\"token bash punctuation\"> <span class=\"token operator\">></span>clean.sh</span>\n#!/bin/bash\n# Clean out everything as much as possible\nset -euo pipefail\necho \"== CLEANING ==\"\nmake clean\nmake maintainer-clean\n# Extra cleaning is possible if inside a git repo\nif git rev-parse --is-inside-work-tree > /dev/null 2>&amp;1; then\n  echo \"Using .gitignore in an active git repo to clean out autotool files and directories\"\n  git clean -Xdf\nfi\nEOF</span>\n<span class=\"token function\">chmod</span> +x clean.sh\n\n<span class=\"token comment\"># Create .gitignore</span>\n<span class=\"token function\">cat</span> <span class=\"token operator\">&lt;&lt;</span><span class=\"token string\">EOF<span class=\"token bash punctuation\"> <span class=\"token operator\">></span>.gitignore</span>\n# http://www.gnu.org/software/automake\n\nMakefile.in\n/ar-lib\n/mdate-sh\n/py-compile\n/test-driver\n/ylwrap\n.deps/\n.dirstamp\n\n# http://www.gnu.org/software/autoconf\n\nautom4te.cache\n/autoscan.log\n/autoscan-*.log\n/aclocal.m4\n/compile\n/config.cache\n/config.guess\n/config.h.in\n/config.log\n/config.status\n/config.sub\n/configure\n/configure.scan\n/depcomp\n/install-sh\n/missing\n/stamp-h1\n\n# https://www.gnu.org/software/libtool/\n\n/ltmain.sh\n\n# http://www.gnu.org/software/texinfo\n\n/texinfo.tex\n\n# http://www.gnu.org/software/m4/\n\nm4/libtool.m4\nm4/ltoptions.m4\nm4/ltsugar.m4\nm4/ltversion.m4\nm4/lt~obsolete.m4\n\n# Generated Makefile\n# (meta build system like autotools,\n# can automatically generate from config.status script\n# (which is called by configure script))\nMakefile\n\n# Generated from configure.ac by autoheader\nconfig_h.in\nsrc/config.h\nsrc/stamp-h1\n\n# Generated by autoreconf -i because of AC_CONFIG_AUX_DIR()\nbuild-aux/\nEOF</span>\n\n<span class=\"token comment\"># Check overall compilation flow</span>\n./bootstrap.sh <span class=\"token operator\">&amp;&amp;</span> ./build.sh <span class=\"token operator\">&amp;&amp;</span> ./test.sh <span class=\"token operator\">&amp;&amp;</span> ./clean.sh\n\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"== COMPLETE ==\"</span>\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Project '<span class=\"token variable\">$PACKAGE_NAME</span>' initialized. Run './bootstrap.sh' to set up the Autotools project.\"</span></code></pre>\n<h2>Autotools Cleanup Note</h2>\n<p>After running the provided script to set up a project using Autotools, some generated files such as <code>aclocal.m4</code>, <code>configure</code>, <code>Makefile.in</code>, and others may remain in the project directory even after cleaning with <code>make clean</code> and <code>make maintainer-clean</code>. These files are essential for the Autotools build system and are typically preserved as they may contain custom configurations or manual modifications made by developers.</p>\n<p>I've added a check that would remove it if it's a git based project via the .gitignore file, however you can delete it from the script if you think you would be hand editing it as well.</p>\n<ul>\n<li><code>aclocal.m4</code> typically contains macros and definitions used during the configuration process. Developers often customize this file to include project-specific macros or to modify existing ones to fit their requirements.</li>\n<li><code>configure</code> is a script generated by <code>autoconf</code> that is used to configure the build environment. It's often customized by developers to include specific configuration options or settings relevant to their project. Regenerating <code>configure</code> from scratch can be time-consuming and may discard customizations, so it's typically preserved during clean-up operations.</li>\n<li><code>Makefile.in</code> files are templates generated by <code>automake</code> from <code>Makefile.am</code> files. While <code>Makefile.in</code> files are usually generated automatically, developers may make manual adjustments or additions to them to fine-tune the build process or include custom rules. Preserving these files ensures that these manual modifications are not lost.</li>\n<li>Additionally, files such as <code>compile</code>, <code>depcomp</code>, <code>install-sh</code>, and <code>missing</code> are auxiliary scripts and templates used by Autotools during the build process. Although they are generated by Autotools, developers may need to customize or modify them to accommodate specific project requirements. Therefore, they are also preserved after cleaning to ensure that any manual modifications are retained.</li>\n</ul>\n<p>By preserving these files, developers retain control over their project's configuration and build process, allowing for customization and flexibility.</p>\n",
      "date_published": "2024-04-11T00:00:00Z"
    },
    {
      "id": "/blog/2024/04/06/inplace-upgrading-of-llamafiles-engine-bash-script/",
      "url": "/blog/2024/04/06/inplace-upgrading-of-llamafiles-engine-bash-script/",
      "title": "Inplace Upgrading Of Llamafiles Engine Bash Script",
      "content_html":"<p>Been getting into LLMs and one thing I noticed being in Australia is internet speed still suck here compared to many other countries. Well in the meantime for the llamafile project, here is one useful linux bash script which may be useful for you who already downloaded a llamafile model a while ago, but want to take advantage of the new speedups that justine figured out for llamafile <a href=\"https://justine.lol/matmul/\">https://justine.lol/matmul/</a> .</p>\n<p>This script facilitates the repackaging and upgrading of llamafile archives generated by Llama.cpp. This is particularly useful for users with limited internet access, by preserving existing gguf and .arg settings while replacing the llamafile engine. This may break in the future if the llamafile contains more than just .gguf and .args but for now it shall do.</p>\n<hr />\n<p>This is also posted to <a href=\"https://gist.github.com/mofosyne/46c63934305d5a5321c7e9fd83f4ef3e\">gist</a> in case anyone needs it.</p>\n<pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token shebang important\">#!/bin/bash</span>\n<span class=\"token comment\"># Llama.cpp Repackaging Script</span>\n<span class=\"token comment\"># This script facilitates the repackaging and upgrading of llamafile archives generated by Llama.cpp.</span>\n<span class=\"token comment\"># This is particularly useful for users with limited internet access, by preserving existing gguf and .arg settings while replacing the llamafile engine.</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\"># Usage: llamafilerepack [-h] [-f] &lt;old> &lt;new></span>\n<span class=\"token comment\">#   -h: Display usage information.</span>\n<span class=\"token comment\">#   -f: Skip Version Check.</span>\n<span class=\"token comment\">#   -v: Verbose Mode</span>\n<span class=\"token comment\">#   &lt;old>: The name of the old llamafile archive to be upgraded.</span>\n<span class=\"token comment\">#   &lt;new>: The name of the new llamafile archive to be created.</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\"># Example:</span>\n<span class=\"token comment\">#   llamafilerepack old_llamafile new_llamafile</span>\n<span class=\"token comment\">#   This command will upgrade the old_llamafile to a new llamafile named new_llamafile.</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\"># Author: Brian Khuu</span>\n<span class=\"token comment\"># Date: 2023-04-06</span>\n<span class=\"token comment\"># https://briankhuu.com/blog/2024/04/06/inplace-upgrading-of-llamafiles-engine-bash-script/</span>\n<span class=\"token builtin class-name\">set</span> <span class=\"token parameter variable\">-e</span>\n\n<span class=\"token comment\"># Function to display usage information</span>\n<span class=\"token function-name function\">print_usage</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Usage: <span class=\"token variable\">$0</span> [OPTION]... &lt;old> &lt;new>\"</span>\n    <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Upgrade llamafile archives.\"</span>\n    <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"\"</span>\n    <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Options:\"</span>\n    <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"  -h, --help            display this help and exit\"</span>\n    <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"  -f, --force           skip version check\"</span>\n    <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"  -v, --verbose         verbose mode\"</span>\n    <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"\"</span>\n    <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Arguments:\"</span>\n    <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"  &lt;old>                 the name of the old llamafile archive to be upgraded\"</span>\n    <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"  &lt;new>                 the name of the new llamafile archive to be created\"</span>\n    <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"\"</span>\n    <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Example:\"</span>\n    <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"  <span class=\"token variable\">$0</span> old_llamafile new_llamafile\"</span>\n    <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"  This command will upgrade the old_llamafile to a new llamafile named new_llamafile.\"</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token comment\"># Parse command-line options</span>\n<span class=\"token keyword\">while</span> <span class=\"token builtin class-name\">getopts</span> <span class=\"token string\">\"hfv\"</span> opt<span class=\"token punctuation\">;</span> <span class=\"token keyword\">do</span>\n    <span class=\"token keyword\">case</span> <span class=\"token variable\">$opt</span> <span class=\"token keyword\">in</span>\n        h<span class=\"token punctuation\">)</span> \n            print_usage\n            <span class=\"token builtin class-name\">exit</span> <span class=\"token number\">0</span> <span class=\"token punctuation\">;</span><span class=\"token punctuation\">;</span>\n        f<span class=\"token punctuation\">)</span> \n            <span class=\"token assign-left variable\">force_upgrade</span><span class=\"token operator\">=</span>true\n            <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Skipping version check.\"</span> <span class=\"token punctuation\">;</span><span class=\"token punctuation\">;</span>\n        <span class=\"token function\">v</span><span class=\"token punctuation\">)</span> \n            <span class=\"token assign-left variable\">verbose</span><span class=\"token operator\">=</span>true\n            <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Verbose Output Mode.\"</span> <span class=\"token punctuation\">;</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">esac</span>\n<span class=\"token keyword\">done</span>\n\n\n<span class=\"token comment\"># Shift the option parameters</span>\n<span class=\"token builtin class-name\">shift</span> <span class=\"token variable\"><span class=\"token variable\">$((</span>OPTIND <span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token variable\">))</span></span>\n\n<span class=\"token comment\"># Remove .llamafile extension from arguments if present</span>\n<span class=\"token assign-left variable\">old_llamafile</span><span class=\"token operator\">=</span><span class=\"token string\">\"<span class=\"token variable\">${1<span class=\"token operator\">%</span>.llamafile}</span>\"</span>\n<span class=\"token keyword\">if</span> <span class=\"token punctuation\">[</span> <span class=\"token parameter variable\">-z</span> <span class=\"token string\">\"<span class=\"token variable\">$2</span>\"</span> <span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n    <span class=\"token assign-left variable\">new_llamafile</span><span class=\"token operator\">=</span><span class=\"token string\">\"<span class=\"token variable\">${1<span class=\"token operator\">%</span>.llamafile}</span>.updated\"</span>\n<span class=\"token keyword\">else</span>\n    <span class=\"token assign-left variable\">new_llamafile</span><span class=\"token operator\">=</span><span class=\"token string\">\"<span class=\"token variable\">${2<span class=\"token operator\">%</span>.llamafile}</span>\"</span>\n<span class=\"token keyword\">fi</span>\n\n<span class=\"token comment\"># Obtain versions of old and new llamafiles</span>\n<span class=\"token assign-left variable\">old_llamafile_engine_version</span><span class=\"token operator\">=</span><span class=\"token variable\"><span class=\"token variable\">$(</span>./<span class=\"token string\">\"<span class=\"token variable\">$old_llamafile</span>\"</span>.llamafile <span class=\"token parameter variable\">--version</span><span class=\"token variable\">)</span></span>\n<span class=\"token assign-left variable\">new_llamafile_engine_version</span><span class=\"token operator\">=</span><span class=\"token variable\"><span class=\"token variable\">$(</span>/usr/local/bin/llamafile <span class=\"token parameter variable\">--version</span><span class=\"token variable\">)</span></span>\n\n<span class=\"token comment\"># Check if llamafile has been upgraded</span>\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"== Engine Version Check ==\"</span>\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Engine version from <span class=\"token variable\">$old_llamafile</span>: <span class=\"token variable\">$old_llamafile_engine_version</span>\"</span>\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Engine version from /usr/local/bin/llamafile: <span class=\"token variable\">$new_llamafile_engine_version</span>\"</span>\n<span class=\"token keyword\">if</span> <span class=\"token punctuation\">[</span> <span class=\"token string\">\"<span class=\"token variable\">$old_llamafile_engine_version</span>\"</span> <span class=\"token operator\">=</span> <span class=\"token string\">\"<span class=\"token variable\">$new_llamafile_engine_version</span>\"</span> <span class=\"token punctuation\">]</span> <span class=\"token operator\">&amp;&amp;</span> <span class=\"token punctuation\">[</span> <span class=\"token string\">\"<span class=\"token variable\">$force_upgrade</span>\"</span> <span class=\"token operator\">!=</span> <span class=\"token string\">\"true\"</span> <span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n    <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"Upgrade not required. Exiting...\"</span>\n    <span class=\"token builtin class-name\">exit</span> <span class=\"token number\">0</span>\n<span class=\"token keyword\">fi</span>\n\n<span class=\"token keyword\">if</span> <span class=\"token punctuation\">[</span> <span class=\"token string\">\"<span class=\"token variable\">$verbose</span>\"</span> <span class=\"token operator\">=</span> <span class=\"token string\">\"true\"</span> <span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n  <span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"== Current Content ==\"</span>\n  zipinfo <span class=\"token string\">\"<span class=\"token variable\">${old_llamafile}</span>.llamafile\"</span>\n<span class=\"token keyword\">fi</span>\n\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"== Repackaging / Upgrading ==\"</span>\n<span class=\"token assign-left variable\">tempdir</span><span class=\"token operator\">=</span><span class=\"token variable\"><span class=\"token variable\">$(</span>mktemp <span class=\"token parameter variable\">-d</span><span class=\"token variable\">)</span></span>\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"extracting...\"</span>\n<span class=\"token function\">unzip</span> <span class=\"token string\">\"<span class=\"token variable\">${old_llamafile}</span>.llamafile\"</span> <span class=\"token parameter variable\">-d</span> <span class=\"token variable\">${tempdir}</span>\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"repackaging...\"</span>\n<span class=\"token function\">cp</span> /usr/local/bin/llamafile <span class=\"token string\">\"<span class=\"token variable\">${new_llamafile}</span>.llamafile\"</span>\n/usr/local/bin/zipalign <span class=\"token parameter variable\">-j0</span> <span class=\"token string\">\"<span class=\"token variable\">${new_llamafile}</span>.llamafile\"</span> <span class=\"token variable\">${tempdir}</span>/*.gguf <span class=\"token variable\">${tempdir}</span>/.args\n\n<span class=\"token builtin class-name\">echo</span> <span class=\"token string\">\"== Completed ==\"</span></code></pre>\n",
      "date_published": "2024-04-06T00:00:00Z"
    },
    {
      "id": "/blog/2024/04/01/updating-root-ca-certificates-on-citaq-h10-android-device/",
      "url": "/blog/2024/04/01/updating-root-ca-certificates-on-citaq-h10-android-device/",
      "title": "Updating Root CA Certificates on a very old CITAQ H10 Android Device",
      "content_html":"<p>A while ago I was helping out with <a href=\"https://github.com/netguycode/citaq\">netguy's CITAQ H10 research found here</a>. I was able to figure out to interface with the printer on it directly via the onboard internal serial port.</p>\n<p>Recently however, I've been getting interested in creating some app for it and was checking if the web browser can still access modern websites. Much to my dismay, I discovered a significant hurdle: any websites utilizing Let's Encrypt SSL certificates were inaccessible.</p>\n<p>This got me trying to figure out how to update the Root CA certificates on the device, with the hope of enabling seamless access to Let's Encrypt-secured websites. This is some of the steps I had to do to get it working again by updating the built in root certificates to match the latest google android ca-certificates found in the latest android builds for newer devices.</p>\n<hr />\n<p>First start by enabling Android dev mode by tapping <code>Settings &gt; About tablet &gt; Build Number</code> multiple times. Then install a terminal emulator android app and run <code>start adbd</code> command to start the adb daemon server. Then use <code>ifconfig</code> to find the ip address that this device is using.</p>\n<p>Once you have got the device accessible over the network via adb, open up a shell terminal on your side... then update <code>DEVICE_IP</code>to match what the device ip is. You can then go though these steps below to download the latest CA certs then load it into the android device before rebooting. Once done, you should now be able to access let's encrypt protected websites.</p>\n<pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token comment\"># Pre Setup</span>\n<span class=\"token assign-left variable\">DEVICE_IP</span><span class=\"token operator\">=</span><span class=\"token number\">192.168</span>.152.248\n\n<span class=\"token comment\"># Download the CA certificates archive</span>\n<span class=\"token builtin class-name\">cd</span> /tmp/\n<span class=\"token function\">wget</span> <span class=\"token parameter variable\">-O</span> android-ca.tar.gz https://android.googlesource.com/platform/system/ca-certificates/+archive/refs/heads/main/files.tar.gz\n\n<span class=\"token comment\"># Create a temporary directory to extract the certificates</span>\n<span class=\"token function\">mkdir</span> /tmp/cacerts\n\n<span class=\"token comment\"># Extract the CA certificates to the temporary directory</span>\n<span class=\"token function\">tar</span> <span class=\"token parameter variable\">-xzvf</span> android-ca.tar.gz <span class=\"token parameter variable\">-C</span> /tmp/cacerts/\n\n<span class=\"token comment\"># Connect to the device</span>\nadb connect <span class=\"token variable\">${DEVICE_IP}</span>:5555\n\n<span class=\"token comment\"># Enter root mode (wait at least X seconds for adbd to restart into root mode)</span>\nadb root\n<span class=\"token function\">timeout</span> <span class=\"token number\">40</span> adb wait-for-any-device\n\n<span class=\"token comment\"># Push the temporary directory containing the certificates to the device's storage</span>\nadb shell <span class=\"token function\">mount</span> <span class=\"token parameter variable\">-o</span> rw,remount,rw /system\nadb push /tmp/cacerts/ /system/etc/security/\nadb shell <span class=\"token function\">mount</span> <span class=\"token parameter variable\">-o</span> ro,remount,ro /system\n\n<span class=\"token comment\"># Sanity Check</span>\nadb shell <span class=\"token string\">\"grep -C 0 'ISRG Root X1' /system/etc/security/cacerts/*.0\"</span>\nadb shell <span class=\"token string\">\"grep -C 0 'ISRG Root X2' /system/etc/security/cacerts/*.0\"</span>\n\n<span class=\"token comment\"># Reboot</span>\nadb <span class=\"token function\">reboot</span></code></pre>\n",
      "date_published": "2024-04-01T00:00:00Z"
    },
    {
      "id": "/blog/2023/09/12/citaq-h10-3-exploration-log/",
      "url": "/blog/2023/09/12/citaq-h10-3-exploration-log/",
      "title": "CITAQ H10-3 Exploration Log",
      "content_html":"<p>Did some exploration of a CITAQ H10-3 that I got from a friend who does not need it anymore for his shop.</p>\n<p>I also contributed a few other useful informations like how to factory reset it, so if you need such information then head on to this <a href=\"https://github.com/netguycode/citaq/blob/main/factory_reset_guide.md\">Factory Reset Guide For CITAQ H10</a>. I've also contributed other more detailed technical notes to this technical repository notes by netguy <a href=\"https://github.com/netguycode/citaq\">netguycode/citaq</a>.</p>\n<p>Below is an exploration log of how the SDK and device work because in the future I may want to give a shot at writing an app for it. This doesn't quite fit into the above repository as it is more general notes and timeline of discoveries I found while exploring it and is a bit more disorganized (but is eventually cleaned up and entered into the repository). Still there are other useful notes that cannot be easily transferred and so may be of use to anyone still exploring this device as well so enjoy!</p>\n<h1>CITAQ H10-3 SDK</h1>\n<h2>Where is the print logic in POSFactory App?</h2>\n<pre><code>~/git/Citaq-H10-3/CitaqSDK/src/com/citaq/citaqfactory/PrintActivity.java\n</code></pre>\n<h3>How does the print demo text work? (<code>PrintActivity.java</code>)</h3>\n<p>This button to print demo text will call either <code>Command.getPrintDemoZH()</code> and <code>Command.getPrintDemo()</code> from <code>./CitaqSDK/src/com/citaq/util/Command.java</code> which would output a byte array of ESC/POS formatted text.</p>\n<p>This is sent to <code>printerWrite()</code> in <code>PrintActivity.java</code> which calls <code>mSendThread.addData()</code> from <code>public class SendThread extends Thread</code> which would call either <code>serialWrite()</code> or <code>usbWrite()</code> to send the ESC/POS data to the internal printer.</p>\n<p><strong>Serial</strong></p>\n<pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">public</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">PrintActivity</span> <span class=\"token keyword\">extends</span> <span class=\"token class-name\">SerialPortActivity</span><span class=\"token punctuation\">{</span>\n\t<span class=\"token keyword\">private</span> <span class=\"token keyword\">void</span> <span class=\"token function\">initSerial</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n\t\t\tmSerialPort <span class=\"token operator\">=</span> mApplication<span class=\"token punctuation\">.</span><span class=\"token function\">getPrintSerialPort</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t\tmOutputStream <span class=\"token operator\">=</span> mSerialPort<span class=\"token punctuation\">.</span><span class=\"token function\">getOutputStream</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span> <span class=\"token punctuation\">}</span> <span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span> <span class=\"token punctuation\">}</span> <span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span></code></pre>\n<p>Where <code>getPrintSerialPort()</code> from <code>./CitaqSDK/src/com/citaq/citaqfactory/CitaqApplication.java</code> uses <code>SerialPort()</code> from <code>./CitaqSDK/src/android_serialport_api/SerialPort.java</code></p>\n<pre class=\"language-java\"><code class=\"language-java\">\t<span class=\"token keyword\">public</span> <span class=\"token class-name\">SerialPort</span> <span class=\"token function\">getPrintSerialPort</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">throws</span> <span class=\"token class-name\">SecurityException</span><span class=\"token punctuation\">,</span> <span class=\"token class-name\">IOException</span><span class=\"token punctuation\">,</span> <span class=\"token class-name\">InvalidParameterException</span> <span class=\"token punctuation\">{</span>\n\t\t<span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>mSerialPort <span class=\"token operator\">==</span> <span class=\"token keyword\">null</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\t\t<span class=\"token comment\">/* Open the serial port */</span>\n\t\t\tmSerialPort <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">SerialPort</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">new</span> <span class=\"token class-name\">File</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"/dev/ttyS1\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token number\">115200</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token punctuation\">}</span>\n\t\t<span class=\"token keyword\">return</span> mSerialPort<span class=\"token punctuation\">;</span>\n\t<span class=\"token punctuation\">}</span></code></pre>\n<p>Where</p>\n<pre class=\"language-java\"><code class=\"language-java\">\t<span class=\"token keyword\">public</span> <span class=\"token class-name\">SerialPort</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">File</span> device<span class=\"token punctuation\">,</span> <span class=\"token keyword\">int</span> baudrate<span class=\"token punctuation\">,</span> <span class=\"token keyword\">int</span> flags<span class=\"token punctuation\">,</span> <span class=\"token keyword\">boolean</span> flowCon<span class=\"token punctuation\">)</span></code></pre>\n<p>But the main point to learn from the above function is that the internal serial port we should be using to talk to the internal printer is:</p>\n<ul>\n<li>CTE-RP80 Internal Printer Serial Port\n<ul>\n<li>path: <code>/dev/ttyS1</code></li>\n<li>baud: 115200</li>\n<li>flag: none</li>\n<li>flow control: enabled</li>\n</ul>\n</li>\n</ul>\n<h2>How does led bar works</h2>\n<p>The test page for this led bar main business logic page is at <code>./CitaqSDK/src/com/citaq/citaqfactory/LedActivity.java</code></p>\n<p>Which essentally calls functions like <code>trunOnRedRight()</code> which is from</p>\n<pre><code>./CitaqSDK/src/com/citaq/util/LEDControl.java\n</code></pre>\n<p>The virtual gpio file that this function writes is dependent on cpu type (different board revision?)</p>\n<p>This is determined via <code>getCpuHardware()</code> which calls a linux command <code>cat /proc/cpuinfo</code> that dumps the board hardware info and scans for lines starting with <code>Hardware:</code> and grab the hardware ID after it.</p>\n<table>\n<thead>\n<tr>\n<th>getCpuHardware() Recognised Board Type</th>\n<th>hardware ID string (/proc/cpuinfo)</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>SMDKV210</td>\n<td><code>SMDKV210</code></td>\n</tr>\n<tr>\n<td>RK3188</td>\n<td><code>RK30BOARD</code></td>\n</tr>\n<tr>\n<td>RK30BOARD</td>\n<td><code>SUN50IW1P1</code></td>\n</tr>\n<tr>\n<td>MSM8625Q</td>\n<td><code>QRD MSM8625Q SKUD</code></td>\n</tr>\n<tr>\n<td>RK3368</td>\n<td><code>RK3368</code></td>\n</tr>\n</tbody>\n</table>\n<p>Fortunately as shown in trunOnRedRight()... in both CPU/board models, you just need to write <code>1</code> to turn led on or <code>0</code> to turn led off as shown in <code>trunOnRedRight()</code>. As for what files should be written to based on board type, there is some clues based on what <code>trunOnRedRight()</code> and <code>trunOnBlueRight()</code></p>\n<ul>\n<li>MainBoardUtil.RK3188 or MainBoardUtil.RK30BOARD\n<ul>\n<li>RED: <code>/sys/class/gpio/gpio190/value</code></li>\n<li>BLUE: <code>/sys/class/gpio/gpio172/value</code></li>\n</ul>\n</li>\n<li>MainBoardUtil.RK3368\n<ul>\n<li>RED: <code>/sys/class/gpio/gpio124/value</code></li>\n<li>BLUE: <code>/sys/class/gpio/gpio106/value</code></li>\n</ul>\n</li>\n</ul>\n<p>There is also <code>MainBoardUtil.MSM8625Q</code> referenced in <code>trunOnRedRight()</code> to control the led bar, but instead of control via linux gpio virual files interface... it is via calling <code>isRedlightOn()</code> function contained within a JNI (Java Native Interface) libarary from <code>/CitaqSDK/libs/x86/libposctrl_jni.so</code>. This fits my experience when working with Qualcomm SoC in that they don't typically give you datasheets for direct access to the gpio memory map as those tend to be behind NDAs for some reason...</p>\n<p>As for other boards/cpu mentioned above, there is no led reference to it... so its likely an older model that may not have an led bar.</p>\n<p>But anyway for the context of this repository this does not matter. We got what we needed for system speccing now.</p>\n<h2>Whats with the other serial virtual file ports???</h2>\n<p>In <code>./CitaqSDK/src/com/citaq/citaqfactory/CitaqApplication.java</code> we see</p>\n<table>\n<thead>\n<tr>\n<th>serial port getter name</th>\n<th>Serial Port Devices</th>\n<th>Baud</th>\n<th>Flow Control</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>getPrintSerialPort()</td>\n<td>'/dev/ttyS1`</td>\n<td>115200</td>\n<td>true</td>\n</tr>\n<tr>\n<td>getPrintSerialPortMT()</td>\n<td>'/dev/ttyMT0`</td>\n<td>115200</td>\n<td>true</td>\n</tr>\n<tr>\n<td>getMSRSerialPort()</td>\n<td>'/dev/ttyS2`</td>\n<td>19200</td>\n<td>false</td>\n</tr>\n<tr>\n<td>getCtmDisplaySerialPort()</td>\n<td>'/dev/ttyS3`</td>\n<td>9600</td>\n<td>false</td>\n</tr>\n<tr>\n<td>getMSRSerialPort_S4()</td>\n<td>'/dev/ttyS4`</td>\n<td>19200</td>\n<td>false</td>\n</tr>\n</tbody>\n</table>\n<p>So let's at least annotate this for documentation</p>\n<p>(Note: My best guess is that MSR means Magnetic Stripe Reader in the context of Point Of Sales equiment)</p>\n<table>\n<thead>\n<tr>\n<th>CitaqApplication.java func()</th>\n<th>Serial Port Devices</th>\n<th>Baud</th>\n<th>Flow Control</th>\n<th>Note On Usage</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>getPrintSerialPort()</td>\n<td>'/dev/ttyS1`</td>\n<td>115200</td>\n<td>true</td>\n<td>Internal Thermal Printer</td>\n</tr>\n<tr>\n<td>getPrintSerialPortMT()</td>\n<td>'/dev/ttyMT0`</td>\n<td>115200</td>\n<td>true</td>\n<td>Unknown Usage</td>\n</tr>\n<tr>\n<td>getMSRSerialPort()</td>\n<td>'/dev/ttyS2`</td>\n<td>19200</td>\n<td>false</td>\n<td>Magnetic Stripe Reader via serial port</td>\n</tr>\n<tr>\n<td>getCtmDisplaySerialPort()</td>\n<td>'/dev/ttyS3`</td>\n<td>9600</td>\n<td>false</td>\n<td>Customer Display facing serial port. Used by FSK Caller ID and PD (ESC/POS Printer Device) example in POSFactory app</td>\n</tr>\n<tr>\n<td>getMSRSerialPort_S4()</td>\n<td>'/dev/ttyS4`</td>\n<td>19200</td>\n<td>false</td>\n<td>Magnetic Stripe Reader via serial port</td>\n</tr>\n</tbody>\n</table>\n<p>I'm not sure which one would control the serial port that is externally accessible from the CITAQ H10-3</p>\n<h2>Dumping</h2>\n<p>Enable Android dev mode by tapping <code>Settings &gt; About tablet &gt; Build Number</code> multiple times.\nThen install a terminal emulator android app and run <code>start adbd</code> command to start the adb daemon server.\nThen use <code>ifconfig</code> to find the ip address that this device is using.</p>\n<p>Then on the PC type these command (Replace <code>${IP_ADDRESS}</code> with the ip address of the device)</p>\n<pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">sudo</span> <span class=\"token function\">apt</span> <span class=\"token function\">install</span> adb\nadb connect <span class=\"token variable\">${IP_ADDRESS}</span>:5555\nadb shell</code></pre>\n<p>Then within the adb shell I ran <code>/proc/cpuinfo</code> and dumped the content here:</p>\n<pre><code>shell@rk3368:/ $ cat /proc/cpuinfo\nprocessor\t: 0\nBogoMIPS\t: 48.00\nFeatures\t: fp asimd evtstrm aes pmull sha1 sha2 crc32\nCPU implementer\t: 0x41\nCPU architecture: AArch64\nCPU variant\t: 0x0\nCPU part\t: 0xd03\nCPU revision\t: 3\n\nprocessor\t: 1\nBogoMIPS\t: 48.00\nFeatures\t: fp asimd evtstrm aes pmull sha1 sha2 crc32\nCPU implementer\t: 0x41\nCPU architecture: AArch64\nCPU variant\t: 0x0\nCPU part\t: 0xd03\nCPU revision\t: 3\n\nprocessor\t: 2\nBogoMIPS\t: 48.00\nFeatures\t: fp asimd evtstrm aes pmull sha1 sha2 crc32\nCPU implementer\t: 0x41\nCPU architecture: AArch64\nCPU variant\t: 0x0\nCPU part\t: 0xd03\nCPU revision\t: 3\n\nprocessor\t: 3\nBogoMIPS\t: 48.00\nFeatures\t: fp asimd evtstrm aes pmull sha1 sha2 crc32\nCPU implementer\t: 0x41\nCPU architecture: AArch64\nCPU variant\t: 0x0\nCPU part\t: 0xd03\nCPU revision\t: 3\n\nprocessor\t: 4\nBogoMIPS\t: 48.00\nFeatures\t: fp asimd evtstrm aes pmull sha1 sha2 crc32\nCPU implementer\t: 0x41\nCPU architecture: AArch64\nCPU variant\t: 0x0\nCPU part\t: 0xd03\nCPU revision\t: 3\n\nprocessor\t: 5\nBogoMIPS\t: 48.00\nFeatures\t: fp asimd evtstrm aes pmull sha1 sha2 crc32\nCPU implementer\t: 0x41\nCPU architecture: AArch64\nCPU variant\t: 0x0\nCPU part\t: 0xd03\nCPU revision\t: 3\n\nprocessor\t: 6\nBogoMIPS\t: 48.00\nFeatures\t: fp asimd evtstrm aes pmull sha1 sha2 crc32\nCPU implementer\t: 0x41\nCPU architecture: AArch64\nCPU variant\t: 0x0\nCPU part\t: 0xd03\nCPU revision\t: 3\n\nprocessor\t: 7\nBogoMIPS\t: 48.00\nFeatures\t: fp asimd evtstrm aes pmull sha1 sha2 crc32\nCPU implementer\t: 0x41\nCPU architecture: AArch64\nCPU variant\t: 0x0\nCPU part\t: 0xd03\nCPU revision\t: 3\n\nHardware\t: rockchip,rk3368\nRevision\t: 0000\nSerial\t\t: 3omdcoosnxpb7jmo\n\n</code></pre>\n<p>Did a bit of test if I could simplify <code>getCpuHardware()</code> with pure shell commands avaliable in android shell.</p>\n<p>Found this shell command works well.</p>\n<pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">cat</span> /proc/cpuinfo <span class=\"token operator\">|</span> <span class=\"token function\">grep</span> <span class=\"token string\">'Hardware'</span> <span class=\"token operator\">|</span> <span class=\"token function\">cut</span> -d<span class=\"token string\">':'</span> <span class=\"token parameter variable\">-f2</span> <span class=\"token operator\">|</span> <span class=\"token function\">cut</span> -d<span class=\"token string\">','</span> <span class=\"token parameter variable\">-f2</span> <span class=\"token operator\">|</span> <span class=\"token function\">tr</span> <span class=\"token parameter variable\">-d</span> <span class=\"token string\">'[:space:]'</span> <span class=\"token operator\">|</span> <span class=\"token function\">tr</span> <span class=\"token string\">'[:lower:]'</span> <span class=\"token string\">'[:upper:]'</span></code></pre>\n<p>So given <code>/proc/cpuinfo</code> file where one of the line is: <code>Hardware: rockchip,rk3368</code> this is the breakdown of the above command.</p>\n<ul>\n<li><code>cat /proc/cpuinfo</code>: Reads the input line from <code>/proc/cpuinfo</code>.</li>\n<li><code>grep 'Hardware'</code>: Searches for lines containing the text &quot;Hardware&quot;</li>\n<li><code>cut -d':' -f2</code>: Splits the line at the colon (&quot;:&quot;) delimiter and selects the second field, which is &quot; rockchip,rk3368&quot; (with a leading space).</li>\n<li><code>cut -d',' -f2</code>: Splits the text at the comma (&quot;,&quot;) delimiter and selects the second field, which is &quot;rk3368&quot; (without any spaces).</li>\n<li><code>tr -d '[:space:]'</code>: Removes any remaining spaces, resulting in &quot;rk3368.&quot;</li>\n<li><code>tr '[:lower:]' '[:upper:]'</code>: Converts the text to uppercase, producing the final output: &quot;RK3368.&quot;</li>\n</ul>\n<p>So, the command successfully processes the input line &quot;Hardware: rockchip,rk3368&quot; and outputs &quot;RK3368&quot; as the hardware identifier, which you could try to detect via <code>getCpuHardware().contains('RK3368')</code>.</p>\n<p>With this insight, we could simplify getCpuHardware() from the SDK into something like this</p>\n<pre class=\"language-java\"><code class=\"language-java\">    <span class=\"token class-name\">String</span> <span class=\"token function\">getCpuHardware</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">try</span> <span class=\"token punctuation\">{</span>\n            <span class=\"token class-name\">Process</span> process <span class=\"token operator\">=</span> <span class=\"token class-name\">Runtime</span><span class=\"token punctuation\">.</span><span class=\"token function\">getRuntime</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">exec</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"cat /proc/cpuinfo | grep 'Hardware' | cut -d':' -f2 | cut -d',' -f2 | tr -d '[:space:]' | tr '[:lower:]' '[:upper:]'\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n            <span class=\"token class-name\">BufferedReader</span> reader <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">BufferedReader</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">new</span> <span class=\"token class-name\">InputStreamReader</span><span class=\"token punctuation\">(</span>process<span class=\"token punctuation\">.</span><span class=\"token function\">getInputStream</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t\t<span class=\"token keyword\">return</span> reader<span class=\"token punctuation\">.</span><span class=\"token function\">readLine</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span> <span class=\"token keyword\">catch</span> <span class=\"token punctuation\">(</span><span class=\"token class-name\">IOException</span> <span class=\"token operator\">|</span> <span class=\"token class-name\">InterruptedException</span> e<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n            e<span class=\"token punctuation\">.</span><span class=\"token function\">printStackTrace</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n        <span class=\"token keyword\">return</span> <span class=\"token string\">\"Unknown\"</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span></code></pre>\n<p>or in bash script function if you somehow need it...</p>\n<pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token keyword\">function</span> <span class=\"token function-name function\">getCpuHardware</span> <span class=\"token punctuation\">{</span> <span class=\"token function\">cat</span> /proc/cpuinfo <span class=\"token operator\">|</span> <span class=\"token function\">grep</span> <span class=\"token string\">'Hardware'</span> <span class=\"token operator\">|</span> <span class=\"token function\">cut</span> -d<span class=\"token string\">':'</span> <span class=\"token parameter variable\">-f2</span> <span class=\"token operator\">|</span> <span class=\"token function\">cut</span> -d<span class=\"token string\">','</span> <span class=\"token parameter variable\">-f2</span> <span class=\"token operator\">|</span> <span class=\"token function\">tr</span> <span class=\"token parameter variable\">-d</span> <span class=\"token string\">'[:space:]'</span> <span class=\"token operator\">|</span> <span class=\"token function\">tr</span> <span class=\"token string\">'[:lower:]'</span> <span class=\"token string\">'[:upper:]'</span><span class=\"token punctuation\">;</span> <span class=\"token punctuation\">}</span>\ngetCpuHardware <span class=\"token comment\"># call get cpu hardware check</span></code></pre>\n<hr />\n<h2>What shell programs accessible in Android v6.0</h2>\n<p>Citaq can supply firmware up to Androiv v6.0 for Citaq H10-3 as of 2023-09-11.</p>\n<p>Often the examples and experiments I've done is via bash commands so best to know what I can use.\nAndroid uses toybox and busybox for shell utils, but does not have all the typical commands of a full desktop linux OS.</p>\n<p>For future reference here it is:</p>\n<pre><code>root@rk3368:/ # toybox\nacpi base64 basename blkid blockdev bzcat cal cat chattr chcon chgrp\nchmod chown chroot cksum clear cmp comm cp cpio cut date dd df dirname\ndmesg dos2unix du echo egrep env expand expr fallocate false fgrep\nfind free freeramdisk fsfreeze getenforce getprop grep groups head\nhelp hostname hwclock id ifconfig inotifyd insmod install kill killall\nln load_policy logname losetup ls lsattr lsmod lsusb makedevs md5sum\nmkdir mkfifo mknod mkswap mktemp modinfo more mount mountpoint mv\nnbd-client nc netcat netstat nice nl nohup od partprobe paste patch\npgrep pidof pivot_root pkill pmap printenv printf pwd pwdx readlink\nrealpath renice restorecon rev rfkill rm rmdir rmmod route runcon\nsed seq setenforce setprop setsid sha1sum sleep sort split stat strings\nswapoff swapon switch_root sync sysctl tac tail tar taskset tee time\ntimeout top touch tr traceroute traceroute6 true truncate tty umount\nuname uniq unix2dos usleep vconfig vmstat wc which whoami xargs yes\n\nroot@rk3368:/sdcard # busybox\nBusyBox v1.22.1 (2014-11-27 12:30:44 CST) multi-call binary.\nBusyBox is copyrighted by many authors between 1998-2012.\nLicensed under GPLv2. See source distribution for detailed\ncopyright notices.\n\nUsage: busybox [function [arguments]...]\n   or: busybox --list\n   or: function [arguments]...\n\n\tBusyBox is a multi-call binary that combines many common Unix\n\tutilities into a single executable.  Most people will create a\n\tlink to busybox for each function they wish to use and BusyBox\n\twill act like whatever it was invoked as.\n\nCurrently defined functions:\n\t[, [[, ar, arp, ash, awk, base64, basename, bash, beep, blkid,\n\tblockdev, bootchartd, bunzip2, bzcat, bzip2, cal, cat, catv, chat,\n\tchattr, chgrp, chmod, chown, chpst, chroot, chrt, chvt, cksum, clear,\n\tcmp, comm, cp, cpio, crond, crontab, cttyhack, cut, dc, dd, deallocvt,\n\tdepmod, devmem, df, diff, dirname, dmesg, dnsd, dos2unix, dpkg,\n\tdpkg-deb, du, dumpkmap, echo, ed, egrep, env, envdir, envuidgid,\n\texpand, expr, fakeidentd, false, fbset, fbsplash, fdflush, fdformat,\n\tfdisk, fgconsole, fgrep, find, findfs, flash_lock, flash_unlock,\n\tflashcp, flock, fold, free, freeramdisk, fstrim, fsync, ftpd, ftpget,\n\tftpput, fuser, getopt, grep, gunzip, gzip, halt, hd, hdparm, head,\n\thexdump, httpd, hwclock, ifconfig, ifdown, ifup, init, inotifyd,\n\tinsmod, install, iostat, ip, ipaddr, ipcalc, iplink, iproute, iprule,\n\tiptunnel, klogd, less, linuxrc, ln, loadkmap, losetup, lpd, lpq, lpr,\n\tls, lsattr, lsmod, lsof, lspci, lsusb, lzcat, lzma, lzop, lzopcat,\n\tmakedevs, makemime, man, md5sum, mdev, mesg, mkdir, mkfifo, mknod,\n\tmkswap, mktemp, modinfo, modprobe, more, mount, mpstat, mv, nanddump,\n\tnbd-client, nc, netstat, nice, nmeter, nohup, od, openvt, patch, pidof,\n\tping, pipe_progress, pkill, pmap, popmaildir, poweroff, powertop,\n\tprintenv, printf, ps, pscan, pstree, pwd, pwdx, raidautorun, rdev,\n\treadlink, readprofile, realpath, reboot, reformime, renice, reset,\n\tresize, rev, rm, rmdir, rmmod, route, rpm, rpm2cpio, rtcwake,\n\trun-parts, runsv, runsvdir, rx, script, scriptreplay, sed, sendmail,\n\tseq, setconsole, setkeycodes, setlogcons, setserial, setsid, setuidgid,\n\tsh, sha1sum, sha256sum, sha3sum, sha512sum, showkey, sleep, smemcap,\n\tsoftlimit, sort, split, start-stop-daemon, strings, stty, sum, sv,\n\tsvlogd, switch_root, sync, sysctl, tac, tail, tar, tcpsvd, tee, telnet,\n\ttelnetd, test, tftp, tftpd, time, timeout, top, tr, traceroute, true,\n\tttysize, tunctl, tune2fs, udhcpc, udpsvd, umount, uname, uncompress,\n\tunexpand, uniq, unix2dos, unlzma, unlzop, unxz, unzip, uptime, usleep,\n\tuudecode, uuencode, vconfig, vi, volname, watch, wc, wget, which,\n\twhoami, whois, xargs, xz, xzcat, yes, zcat\n</code></pre>\n<p>A good reference for all commands across android version is https://android.googlesource.com/platform/system/core/+/master/shell_and_utilities/README.md</p>\n",
      "date_published": "2023-09-12T00:00:00Z"
    },
    {
      "id": "/blog/2022/03/17/cheap-quadrocopter-toy/",
      "url": "/blog/2022/03/17/cheap-quadrocopter-toy/",
      "title": "The Fascination of Mini Quadrocopters",
      "content_html":"<p>Just recently got my hands on a really tiny quadrocopter. It's very cool, especially how they managed to get everything to such a tiny form factor. This is no doubt in part of using the PCBs as part of the support structure.</p>\n<p>This wouldn't be possible without MEMS technologies that you find in a smart phone like accelerometers and gyroscope, in miniaturising components that use to be rather bulky and expensive to use.</p>\n<p>The major ICs onboards are:</p>\n<hr />\n<h1>Microcontroller</h1>\n<p>It's expected it would use a more beefy ARM processor than something like an AVR, since it is doing a closed loop feedback (PID?) control of 4 motors at the same time.</p>\n<h2>IC Markings</h2>\n<pre><code>MINI54ZAN\n415AC\n2412B048\n-ZZ   _ARM_\n</code></pre>\n<h2>Datasheets</h2>\n<p>http://www.digikey.com.au/product-detail/en/MINI54ZAN/MINI54ZAN-ND/2786710</p>\n<p>http://media.digikey.com/pdf/Data%20Sheets/Nuvoton%20PDFs/Mini51_Br.pdf</p>\n<pre><code>\n+ Core\n - ARM Cortex-M0 core runs up to 50 MHz\n - One 24-bit system timer\n - Support low power sleep mode\n - Single-cycle 32-bit hardware multiplier\n - NVIC for the 32 interrupt inputs, each with 4-levels of priority\n - Support Serial Wire Debug (SWD) interface and 2 watchpoints/4 breakpoints\n+ Memory\n - 32K/64K/128K bytes flash memory for program memory\n (APROM) (128K bytes supports NUC100 Medium Density only)\n - 4K bytes flash memory for loader memory (LDROM)\n - Configurable data flash address and size for 128K bytes system,\n fixed 4K bytes data flash (DataFlash) for the 32K bytes and 64K bytes system\n - 4K/8K/16K bytes embedded SRAM (16K bytes supports NUC100\n Medium Density only)\n - Support PDMA mode\n+ Clock Control\n - Flexible selection from different clock sources\n - Build-in 22.1184 MHz high speed oscillator (trimmed to 1%) for\n system operation, and low power 10 KHz low speed oscillator\n for Watchdog timer and Wake-up operation\n - Support one PLL, up to 50 MHz, for high performance system operation\n - External 4 ~ 24 MHz high speed crystal input for precise timing operation\n - External 32.768 KHz low speed crystal input for RTC function\n and low power system operation\n+ Timers\n - Support 4 sets of 32-bit timers with 24-bit up-timer and one 8-bit pre-scale counter\n - Independent clock source for each timer\n - Provide one-shot, periodic, toggle and continuous counting\n operation modes (NUC100 Medium Density supports one-shot and periodic mode only)\n - Support event counting function (NUC100 Low Density only)\n+ PWM\n - Built-in up to four 16-bit PWM generators provide eight PWM\n outputs or four complementary paired PWM outputs\n - Each PWM generator equipped with one clock source selector,\n one clock divider, one 8-bit pre-scale and one Dead-Zone\n generator for complementary paired PWM\n - Up to eight 16-bit digital capture timers (shared with PWM\n timers) provide eight rising/falling capture inputs\n - Support capture interrupt\n+ ADC\n - 12-bit SAR ADC with 600K SPS\n - Up to 8-ch single-end input or 4-ch differential input\n - Single scan/single cycle scan/continuous scan\n - Each channel with individual result register\n - Scan on enabled channels\n - Threshold voltage detection\n - Conversion start by software programming or external input\n - Support PDMA mode\n+ Communication Interface\n - Maximum 3 UARTs, up to 1 Mbit/s with flow control\n - Maximum 4 SPIs, up to 16 MHz (Master@5V), 10 MHz (Salve)\n - 2 I2Cs\n - Support IrDA (SIR) function\n - Support RS485\n+ I2S\n - Interface with external audio CODEC\n - Operate as either master or slave mode\n - Capable of handling 8-, 16-, 24- and 32-bit word sizes\n - Support mono and stereo audio data\n+ Analog Comparator\n - Up to two analog comparators\n - External input or internal bandgap voltage selectable at\n negative node\n - Interrupt when compare result change\n+ RTC\n - Support software compensation by setting frequency compensate register (FCR)\n - Support RTC counter (second, minute, hour) and calendar counter (day, month, year)\n - Support alarm registers (second, minute, hour, day, month, year)\n+ EBI Bus (External bus interface supports NUC100 Low Density 64-pin package only)\n - Accessible space: 64K bytes in 8-bit mode or 128K bytes in 16-bit mode\n - Support 8-/16-bit data width\n - Support byte write in 16-bit data width mode\n+ Brownout Detector\n - With 4 levels: 4.5V / 3.8V / 2.7V / 2.2V\n - Support brownout interrupt and reset option\n+ GPIOs\n - Up to 80 general-purpose I/O (GPIO) pins\n - Four I/O modes: Quasi bi-direction, Push-Pull output, Open-Drain output, Input only with high impendence\n - TTL/Schmitt trigger input selectable\n - All GPIO pins can be configured as interrupt source with\n edge/level setting\n+ Built-in LDO for Wide Operating Voltage Range\n - 2.5V to 5.5V\n+ Operating Temperature\n - - 40oC ~ 85oC\n+ Packages (RoHS)\n - LQFP48 (7x7mm)\n - LQFP64 (10x10mm)\n\n</code></pre>\n<hr />\n<h1>Motion Processing Unit</h1>\n<p>I recognize this! It's an invensense MPU 6050! A 6 axis MPU (3 axis accerometer + 3 axis gyro)</p>\n<h2>IC Markings</h2>\n<pre><code>INVENSENSE\nMPU-6050C\nD36138-B1\nEL 1411 E\n</code></pre>\n<h2>Datasheet</h2>\n<p>http://www.invensense.com/mems/gyro/documents/PS-MPU-6000A-00v3.4.pdf</p>\n<hr />\n<h1>Radio Chip</h1>\n<p>This appears to be a radio chip, due to it's proximity to the antenna</p>\n<h2>IC Markings</h2>\n<pre><code>BEKEN\nBK2423\nB54144C\n</code></pre>\n<h2>Datasheet found:</h2>\n<p>http://www.inhaos.com/uploadfile/otherpic/BK2423%20Datasheet%20v2.0.pdf</p>\n<pre><code>BEKEN BK2423:\n\n\nLow Power High Performance 2.4 GHz GFSK Transceiver \n\n\n2400-2483.5 MHz ISM band operation:\n? Support 250Kbps, 1Mbps and 2 Mbps air data rate\n? Programmable output power\n? Low power consumption\n? Tolerate +/- 60ppm 16 MHz crystal\n? Variable payload length from 1 to 32bytes\n? Automatic packet processing\n? 6 data pipes for 1:6 star networks\n? 1.9V to 3.6V power supply\n? 4-pin SPI interface with maximum 8 MHz clock rate\n? Compact 20-pin 3x3 or 4x4mm QFN package \n\n</code></pre>\n<hr />\n<h1>Well?</h1>\n<p>What would be interesting, is if the quadrocopter can be reprogrammed to add other motions besides the 360 flip in one of it's auto acrobatic stunts button (one press and it does a flip in air).</p>\n<p>Either way, it shows how far we have come since the first toy helicopters a few years ago (2015)</p>\n<p>BTW: in jekyll I had a problem with unicode causing problems with page generation here. Solved it by stripping all non unicode via <code>[^\\x00-\\x7F]+</code> regex expression. Thanks ProGM from http://stackoverflow.com/questions/20889996/notepad-how-to-remove-all-non-ascii-characters-with-regex</p>\n",
      "date_published": "2022-03-17T00:00:00Z"
    },
    {
      "id": "/blog/2019/03/25/Rockwell-Automation-Presentation-Events/",
      "url": "/blog/2019/03/25/Rockwell-Automation-Presentation-Events/",
      "title": "Rockwell Automation University Presentation Events Notes",
      "content_html":"<p>I attended a day presentation called 'Rockwell Automation University' where they showed some interesting development in the field of Industrial Automation. They are really pushing for integrating factories into the internet via the internet to enable new data analytic opportunities. Here is a few quick notes I made of some of the key interesting things I noted on the day.</p>\n<!--more-->\n<hr />\n<h2>Factory based Machine Learning Appliance module</h2>\n<p>Usually when you think about Machine Learning, you would usually think about cloud based software crunching data and spitting out results. However what's interesting is that Rockwell has opted for a AI module that fits right into a PLC.</p>\n<p>Searching online, it's called Project Sherlock; and the idea is that it is a device that sits on the PLC backplane, monitoring the datastream and detecting the various condition of the machinery.</p>\n<p>Based on the data it then creates a predictive model of what it thinks is a working PLC system condition. It is then able to continuously monitor after training, alerting the user if there is an anomaly.</p>\n<p>The main selling point according to Rockwell is that it is easier for non data scientist or field engineers to implement machine learning on the factory floor to detect failing machinery before the machine shuts down as well as the anomaly type. Example provided was monitoring a motor vibration to see if the motor has a loose or fracturing bearing.</p>\n<p>Implementing the machine learning right at the PLC level, but not having it directly interact with the PLC is smart. If you remember the PetNet cloud outage incident, you realise that there is an importance from a risk-limiting perspective to not rely on the stability of remote connection. In the PetNet case, there was no local intelligence in the food schedule of the pet feeder, it was all online. Thus when there was an outage, the pet did not get fed.</p>\n<p>https://www.theguardian.com/technology/2016/jul/27/petnet-auto-feeder-glitch-google</p>\n<p>Thus by implementing the AI module in the factory floor rather than purely the cloud, there is an inbuilt resilience to the system to allow the factory to function, even if disconnected from the internet. But at the same time, also allow for more advance analytics that are not connection stability sensitive (e.g. Long term mean time to failure prediction)</p>\n<hr />\n<h2>Basic Machine Learning Concepts To Understand</h2>\n<h3>Classification Vs Regression</h3>\n<ul>\n<li>Classification - Distinguishing between good or bad states (e.g. Pass or Failed quality of an apple)</li>\n<li>Regression - How well could a ML algo predict another future value, given a different input values. (e.g. Quality of apple, given image of an apple.)</li>\n</ul>\n<h3>Supervised vs Unsupervised vs Semi-Supervised</h3>\n<ul>\n<li>Supervised - Used when a specific prediction is required (e.g. Percentage of apple that will passed quality inspection)</li>\n<li>Unsupervised - Used in detecting anomalies in a running process (Given known running motor, alert if it deviates)</li>\n<li>Semi-Supervised - (e.g. Detected if a motor is failing, and if possible... classify failure modes)</li>\n</ul>\n<hr />\n<h2>Machine Learning Types</h2>\n<h3>Linear Regression</h3>\n<p>Good for simple machine learning problems that is linear in nature.</p>\n<ul>\n<li>Cost Function - Quantity you want to minimise (e.g. error difference from desired motor speed)</li>\n<li>Gradient Descent - Algorithm that slowly moves towards the minimum cost function, via stepping down incrementally towards minimum cost</li>\n</ul>\n<pre><code>|*                     *\n| *--|                *\n|  * |              *\n|    *-|          *\n|      *---|   *\n|          *\n+--------------------\n</code></pre>\n<ul>\n<li>Hyper Parameter Search: Grid search, is a different search algo that search both sides of the cost curve to find the answer faster.</li>\n</ul>\n<pre><code>|*                       *\n| * ----------------&gt;| *\n|  * |&lt;---------------*\n|    * -----------&gt;| *\n|      *    |&lt;-- *\n|           *\n+--------------------\n</code></pre>\n<h3>Neural Network</h3>\n<ul>\n<li>There are plenty of information on neural networks on the web and its a vast field. So didn't take much note on this.</li>\n</ul>\n<hr />\n<h2>Digital Twin</h2>\n<p>It is a IIoT concept where given enough sensors is integrated into the factories and connected to the cloud, it would allow for predictive models to get advance enough that it is able to have an accurate enough conceptual state of the factory floor. Maybe you could describe it as the factory or the company being able to be virtually introspective of themselves. (e.g. How humans know where their limbs are.)</p>\n<p>One example given is the tracking of a steel core though a steel mill. Being able to model a virtual representation of the product, would allow for triggering other factory processes based on the state of the product itself. (For example how much the steel core has cooled down since forging). (e.g. Having an IR camera monitor the heat outside of the product and thus know the spread of the heat inside the product)</p>\n<p>This is as opposed to current factory process of simply waiting a fixed amount of time, which may be inaccurate due to variation in core material properties.</p>\n<hr />\n<h2>Overall process of machine learning process</h2>\n<ul>\n<li>\n<p>Define the Problem space --&gt; Get data --&gt; explore the data for insights --&gt; prep data ---&gt; create model --&gt; gather recommended actions</p>\n</li>\n<li>\n<p>Descriptive --&gt; Diagnostic --&gt; Predictive --&gt; Prescriptive</p>\n<ul>\n<li>Descriptive : We have a motor</li>\n<li>Diagnostics : The motor is failing</li>\n<li>Predictive : The motor will fail in 2 weeks</li>\n<li>Prescriptive : Order motor so it will arrive before 2 weeks. Pay for express shipping if needed.</li>\n</ul>\n</li>\n</ul>\n<table>\n<thead>\n<tr>\n<th>Descriptive --&gt; Diagnostic</th>\n<th>Predictive --&gt; Prescriptive</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Historical</td>\n<td>Future</td>\n</tr>\n<tr>\n<td>Basic Analytics</td>\n<td>Advance Analytics</td>\n</tr>\n</tbody>\n</table>\n<hr />\n<h2>Rockwell Automation Thin Manager</h2>\n<p>Rockwell Thin Manager is intended to be installed on the factory server rack and allows for the centralisation of various factory interfaces together in one thinclient framework. (E.g. IP cameras, HMD, remote desktops).</p>\n<p>The server connects to various thin client terminals or android tablets, allowing for updating the server itself to upgrade all the thinclients, which would allow for easier security patching of the network and reduced attack surface for the factory.</p>\n<p>The Thin Manager thin client remote operating system allow for sharing multiple virtual screens, so you can have different apps on different screens. E.g. monitoring a camera feed, while also checking the PLC's HMD display of various valves state in the machinery.</p>\n<p>Each terminal has two screens, one for the terminal specific interfaces, as well as a switchable screen for user specific displays that can be authenticated by fingerprint or RFID badge (e.g. Different screen for the floor manager vs the floor sparkie)</p>\n<p>These two interfaces in the terminal screen are classified as:</p>\n<ul>\n<li>Terminal Context Tab (e.g. HMD)</li>\n<li>User Context Tab (e.g. User Apps)</li>\n</ul>\n<p>Thin Manager is intended to be vendor agnostic, allowing for other companies to connect their device to Thin Manger via website, HMD, Remote Desktop Protocols or webcam.</p>\n<hr />\n<h2>Interesting Tech To Note</h2>\n<ul>\n<li>CIP - Common Industrial Protocol</li>\n<li>Cisco Stealth Watch - Allows for network snapshot for security analysis</li>\n<li>Network Tagging - Allows for software defined networking for enterprise application. No need for VLAN setup.</li>\n</ul>\n<hr />\n<h2>Detecting Variable Speed Driver Faults</h2>\n<pre><code>DC Drive Waveform\n\n        (B)\n        /|\n.......| |........(C)\n       |  \\\n----   /   \\--------\n    \\-/\n     (A)\n</code></pre>\n<ul>\n<li>A : Load dip (Generating counter EMF?)</li>\n<li>B : Regeneration - Motor is pushing and overshooting</li>\n<li>C : If too high and sharp, this may trigger motor protection, shutting down the motor with an error condition.</li>\n</ul>\n<p>Common fix...</p>\n<ul>\n<li>Overcurrent trip on a VSD drive, try checking the encoder wiring.</li>\n<li>IGOT Overtemp... Excessive load? High ambient temperature?</li>\n</ul>\n",
      "date_published": "2019-03-25T00:00:00Z"
    },
    {
      "id": "/blog/2017/10/07/gameboy-printer-emulation-via-arduino/",
      "url": "/blog/2017/10/07/gameboy-printer-emulation-via-arduino/",
      "title": "gameboy printer emulation via arduino",
      "content_html":"<p>A while ago, I went online and purchased a couple of old gameboy camera carts,\nI found that it had a bunch of old images taken by the previous owner.\nGot me thinking that we really should try to save all these images.\nThus to assist with this, I written a way to extract images from these old cameras,\nthat can be done on the cheap via an arduino, a link cable and a PC.</p>\n<p>Been a bit too busy to do a writeup, but now its ready at least to view.</p>\n<p>The full writeup is located in the project page, along with images that I\nhave extracted from the device. (As well as the JS gameboy printer hex to\nimage decoder)</p>\n<p><a href=\"/projects/gameboy_camera_arduino/gameboy_camera_arduino.html\">Full Writeup Here</a></p>\n<h2>Source code:</h2>\n<p>https://github.com/mofosyne/arduino-gameboy-printer-emulator</p>\n",
      "date_published": "2017-10-07T20:59:00Z"
    },
    {
      "id": "/blog/2017/09/30/electronex_show/",
      "url": "/blog/2017/09/30/electronex_show/",
      "title": "Tips On Testing From Electronex",
      "content_html":"<p>During electronex, I've made some notes on good designs shown below. These are good tips in general to keep in mind.:</p>\n<ul>\n<li>\n<p>Low BOM cost does not always lead to low product cost. Don't forget cost of setup/testing/design etc...</p>\n</li>\n<li>\n<p>Must design for testing in the beginning of the design process or it will be harder to test later on.</p>\n</li>\n<li>\n<p>Built in self test can be useful in the right circumstances, so reserve some extra gpios/adc if possible for it.</p>\n<ul>\n<li>Increase in BOM cost</li>\n<li>Decrease in production cost. Less test equipment/processes.</li>\n<li>Decrease in field servicing cost. Self-diagnostics if test parts left in after production.</li>\n<li>ATE and service can be simplified for functional testing. Leading to reduction of ATE cost and services up to 95% for a cost of a minor BOM increase.</li>\n<li>Does require additional software in device firmware.</li>\n<li>Cost can be zero if done opportunistically. (Example given, is selectively turning on modules to check power draw)</li>\n<li>Cost can be minimal if located in test fixture.</li>\n<li>Needs test points for the automatic test equipment</li>\n<li>Need to manage ESD and potential fault so design care required.</li>\n<li>e.g. Successful Endeavours had an example where they had a test rig that was\nfully passive. The test logic was done via spare gpio in the device MCU.\nThis avoids the need to create a separate MCU or codebase to maintain\nthe test rig. Test code was left in the MCU. Its their policy decision\nthat its okay to do so.</li>\n<li>Reserve GPIOs for timing test in software. This requires preplanning with\nthe software teams to work out what are the critical parts of the\nsoftware that needs to be monitored via external test equipment.</li>\n</ul>\n</li>\n</ul>\n",
      "date_published": "2017-09-30T20:59:00Z"
    },
    {
      "id": "/blog/2015/10/27/cheap-ebay-ble-tag-teardown-itag-via-itracing-app/",
      "url": "/blog/2015/10/27/cheap-ebay-ble-tag-teardown-itag-via-itracing-app/",
      "title": "Cheap Ebay BLE Tag Teardown (iTag via iTracing app)",
      "content_html":"<p>Scored really cheap from ebay. Wonder whats inside, and if it can be reprogrammed at all?</p>\n<p><img src=\"iTagPackaging.jpg\" alt=\"packaging\" /></p>\n<!--more-->\n<p><img src=\"iTagFront.jpg\" alt=\"Front of device\" /></p>\n<p><img src=\"iTagNoBatt.jpg\" alt=\"No battery\" /></p>\n<p><img src=\"iTagBattCase.jpg\" alt=\"Battery case\" /></p>\n<p><img src=\"iTagButtonPCB.jpg\" alt=\"Button and PCB\" /></p>\n<p><img src=\"iTagPCBcloseup.jpg\" alt=\"PCB closeup\" /></p>\n<hr />\n<h2>Annotation</h2>\n<p><img src=\"iTagPCBannotated.jpg\" alt=\"Annotate PCB\" /></p>\n<h3>1:</h3>\n<p>BLE micro controller</p>\n<p>There appears to be some unused pins on one side of this mcu. But datasheet is hard to come by. Does anyone know what chip this is?</p>\n<ul>\n<li>1st Row Text: &quot;ST17H25&quot;</li>\n<li>2st Row Text: &quot;F412ET32&quot;</li>\n<li>3st Row Text: &quot;CK1528&quot;</li>\n<li>4st Row Text: &quot;CFAPOL 1P&quot;</li>\n</ul>\n<h3>2:</h3>\n<ul>\n<li>GND = Ground</li>\n<li>SWS =  (connects to the pin near the dot of uC)</li>\n</ul>\n<ul>\n<li>Is this possibly a programming pin for the uC?</li>\n</ul>\n<ul>\n<li>PWM = This drives the BLUE LED</li>\n</ul>\n<h3>3:</h3>\n<p>Push Button (only one here)</p>\n<h3>4:</h3>\n<p>This allow for testing the buzzer.</p>\n<p>polarity is marked. as BZ+ and BZ-</p>\n<ul>\n<li>BZ- = GND</li>\n<li>BZ+ = Buzzer signal</li>\n</ul>\n<h3>5:</h3>\n<p>MT-8530 peizo buzzer.</p>\n<ul>\n<li>Positive marking is confirmed to mark the pin that is connected to B+ (Vbatt)</li>\n</ul>\n<p>This is no connected directly to the microcontroller like in simple musical greeting cards.</p>\n<p>Instead it is most likely connected to</p>\n<hr />\n<h2>Silkscreen notes</h2>\n<h3>U1</h3>\n<p>This is the microcontroller as mentioned above. I think it is called &quot;ST17H25&quot;, but cannot find datasheet.</p>\n<h3>LC8266</h3>\n<p>I initially thought this is an LDO stepping the battery voltage from 3V (coin cell voltage) to something like 2V or 1.8V.</p>\n<p>However on checking the device, it did not appear to function as one.</p>\n<p>After further studying of the pcb, I think it is most likely a mosfet gate. Since it uses only one resistor to what is likely the gate of the mosfet (resistor connected to uC).</p>\n<h3>BLUE LED1</h3>\n<p>Well it usally blinks to be discovered. Is connected to the PWM testpad (which is connected to uC).</p>\n<h3>B+</h3>\n<p>Battery Positive</p>\n<h3>B-</h3>\n<p>Battery Negative. Also GND ground level.</p>\n<h3>P/N:15 37</h3>\n<p>A diode that is placed essentally electrically across the buzzer. Which is most likely to dissipate the built up energy of the buzzer, when the mosfet driver is suddenly switched off duing a buzzer PWM cycle.</p>\n<h3>12Mhz Crystal</h3>\n<p>The BLE microcontroller runs on 12Mhz</p>\n<hr />\n<p>Well as a tag, it works alright. But as a hackable platform, it's not that great. Datasheet is unknown. Would be good to understand it's protocol thought.</p>\n",
      "date_published": "2015-10-27T02:08:20Z"
    },
    {
      "id": "/blog/2015/07/11/v2.0-avr-register-macros/",
      "url": "/blog/2015/07/11/v2.0-avr-register-macros/",
      "title": "V2.0 AVR Convenient Register Macros for digital pins (for at least atmega family)",
      "content_html":"<p>Ninja edit: I probbly should reworded with a name that properly specifies that this is mostly useful for manipulating digital pins only.</p>\n<hr />\n<p>This is the second iteration of the <a href=\"/projects/saner_bitfield_headers_avr/saner_AVR_bitfield_headers.html\"> saner bitfield project that you can find in this page. </a></p>\n<p>Unlike the first one, where an AVR IO register getter and setter are <code>#define</code> seperately. '\nIn this implementation, a single generic getter and setters was created.</p>\n<p>This means instead of having to use only the registers supported by the macro <code>SET_DDR</code> or <code>SET_PORT</code> like below:</p>\n<pre class=\"language-c\"><code class=\"language-c\"><span class=\"token comment\">// Example blink code for Arduino UNO 16MHz ( atmega328P ) </span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name\">F_CPU</span> <span class=\"token expression\"><span class=\"token number\">16000000UL</span> </span><span class=\"token comment\">// For delay.h to function</span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;avr/io.h></span> <span class=\"token comment\">// PIN, DDR, PORT defs</span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;util/delay.h></span> <span class=\"token comment\">//_delay_ms()</span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">\"./AVRAugment_io.h\"</span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name\">LED13</span> <span class=\"token expression\">B5 </span><span class=\"token comment\">// Only need to change this to swap pins</span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name\">DDR_13</span>\t<span class=\"token expression\"><span class=\"token function\">SET_DDR</span><span class=\"token punctuation\">(</span> LED13<span class=\"token punctuation\">,</span> <span class=\"token number\">0xFF</span> <span class=\"token punctuation\">)</span> </span><span class=\"token comment\">//IN=0x00, OUT=0xFF</span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name\">ON_13</span>\t<span class=\"token expression\"><span class=\"token function\">SET_PORT</span><span class=\"token punctuation\">(</span> LED13<span class=\"token punctuation\">,</span> <span class=\"token number\">0xFF</span> <span class=\"token punctuation\">)</span> </span><span class=\"token comment\">//LOW=0x00, HIGH=0xFF</span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name\">OFF_13</span>\t<span class=\"token expression\"><span class=\"token function\">SET_PORT</span><span class=\"token punctuation\">(</span> LED13<span class=\"token punctuation\">,</span> <span class=\"token number\">0x00</span> <span class=\"token punctuation\">)</span> </span><span class=\"token comment\">//LOW=0x00, HIGH=0xFF</span></span>\n<span class=\"token keyword\">int</span> <span class=\"token function\">main</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">void</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span>\n\tDDR_13<span class=\"token punctuation\">;</span>\n\tON_13<span class=\"token punctuation\">;</span>\n\t<span class=\"token keyword\">while</span><span class=\"token punctuation\">(</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span>\n\t<span class=\"token punctuation\">{</span>\n\t\t<span class=\"token comment\">//_delay_ms(2000);</span>\n\t\tOFF_13<span class=\"token punctuation\">;</span>\n\t\t<span class=\"token comment\">//_delay_ms(2000);</span>\n\t\tON_13<span class=\"token punctuation\">;</span>\n\t<span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre>\n<p>You would be able to just use a single SET_REG macros.</p>\n<pre><code>// Example blink code for Arduino UNO 16MHz (atmega328p)\n#define F_CPU 16000000UL // For delay.h to function\n#include &lt;avr/io.h&gt; // PIN, DDR, PORT defs\n#include &lt;util/delay.h&gt; //_delay_ms()\n#include &quot;./AVRAugment_io.h&quot;\n##define LED13 B5 // Only need to change this to swap pins\n#define DDR_13\tSET_REG( DDR, LED13, 0xFF ) //IN=0x00, OUT=0xFF\n#define ON_13\tSET_REG( PORT, LED13, 0xFF ) //LOW=0x00, HIGH=0xFF\n#define OFF_13\tSET_REG( PORT, LED13, 0x00 ) //LOW=0x00, HIGH=0xFF\nint main(void)\n{\n\tDDR_13;\n\tON_13;\n\twhile(1)\n\t{\n\t\t_delay_ms(2000);\n\t\tOFF_13;\n\t\t_delay_ms(2000);\n\t\tON_13;\n\t}\n}\n</code></pre>\n<hr />\n<p>How does <code>SET_REG( DDR, B5, 0xFF )</code> get decoded by the macro in <code>AVRAugment_io.h</code></p>\n<p>This section defines the SET_REG( REG_NAME , PIN , VALUE ) macro</p>\n<pre><code>// SINGLE BIT BITFIELD MASK ( Usally defined in atmel studio toolchain )\n// #define _BV(bit) (1 &lt;&lt; (bit))\n\n// Enforce input to be either 0xFF or 0x00 (Since if people use arduino constants of HIGH --&gt; 0x1 . Then it wont be 0xFF)\n#define SET_REG_VAL_CHK(VALUE) ( (VALUE&gt;0) ? (0xFF) : (0x00) )\n\n//SET REGISTER\n    // (1). Allows external #define to de-tokenize\n#define SET_REG( REG_NAME , PIN , VALUE ) R1_SET_REG( REG_NAME , PIN , VALUE )      \n    // Seperate letters and numbers. Via first the `##` concat operation, and then detokanizing the PIN_LETTER and PIN_NUMBER (e.g. B1_LETTER --&gt; B )\n#define R1_SET_REG( REG_NAME , PIN , VALUE ) R2_SET_REG( REG_NAME , PIN, PIN##_LETTER, PIN##_NUMBER, VALUE )     \n#define R2_SET_REG( REG_NAME , PIN, LETTER, NUMBER, VALUE  ) R3_SET_REG( REG_NAME , PIN, LETTER, NUMBER, VALUE )\n    // Now we can use the SET() macro (written by David Jahshan )\n#define R3_SET_REG( REG_NAME , PIN, LETTER, NUMBER, VALUE ) SET(    REG_NAME##LETTER\t,\tPIN##_BITMASK\t,\tSET_REG_VAL_CHK(VALUE)\t)\n</code></pre>\n<p>The above macros will have a concat operation that rely on the pregenerated list below, to seperate the letters and number from &quot;B5&quot; into &quot;B&quot; and &quot;5&quot;.</p>\n<pre><code>    //Pxn: B4\n    #define B4_BITMASK   _BV(PB4)\n    #define B4_LETTER    B\n    #define B4_NUMBER    4\n\n    //Pxn: B5\n    #define B5_BITMASK   _BV(PB5)\n    #define B5_LETTER    B\n    #define B5_NUMBER    5\n\n    //Pxn: B6\n    #define B6_BITMASK   _BV(PB6)\n    #define B6_LETTER    B\n    #define B6_NUMBER    6\n</code></pre>\n<p>It is then eventally sent to this section for actual decoding</p>\n<pre><code>//// From David Jahshan's SET and GET macro\n// This will not accept letter+number reference, must give PORT and MASK reference\n// e.g. SET_REGISTER( PORTA, _BV(PA6), 0xFF);\n#define SET(REGISTER,MASK,VALUE)\tREGISTER = ((MASK &amp; VALUE) | (REGISTER &amp; ~MASK))\n#define GET(REGISTER,MASK)\t\t\tREGISTER &amp; MASK\n</code></pre>\n<hr />\n<p>Thus <code>SET_REG( DDR, B5, 0xFF )</code> would get decoded as:</p>\n<p>SET_REG( DDR, LED13, 0xFF )\n--&gt; R1_SET_REG( DDR, B5, 0xFF )\n--&gt; R2_SET_REG( DDR, B5, B5_LETTER, B5_NUMBER, 0xFF)<br />\n--&gt; R3_SET_REG( DDR, PIN, B, 5, 0xFF )\n--&gt; SET( DDRB, B5_BITMASK, SET_REG_VAL_CHK(0xFF) )</p>\n<p>SET( DDRB, B5_BITMASK, (0xFF&gt;0?0xFF:0x00)  )\n--&gt; SET( DDRB, _BV(PB5), (0xFF&gt;0?0xFF:0x00) )\n--&gt; SET( DDRB, 0x00010000, (0xFF&gt;0?0xFF:0x00) )</p>\n<p>Thus the SET() Macro's form:\nREGISTER = (MASK &amp; VALUE) | (REGISTER &amp; ~MASK))\n--&gt; DDRB = ( 0x00010000 &amp; (0xFF&gt;0?0xFF:0x00) ) | ( DDRB &amp;  ~0x00010000 ))</p>\n<p>Optimized ( Since (0xFF&gt;0?0xFF:0x00) == 0xFF == 0x11111111):\n--&gt; DDRB = ( 0x00010000 &amp; 0xFF ) | ( DDRB &amp;  ~0x00010000 ))\n--&gt; DDRB = ( 0x00010000 ) | ( DDRB &amp;  ~0x00010000 ))\n--&gt; DDRB = 0x00010000 | DDRB</p>\n<p><strong>Note:</strong> Optimization above, only works if VALUE=0xFF since setting values to high is of this form. Where setting bits is via <code>VAR = VAR | MASK</code>.\nIf VALUE = 0x00 then <code>VARIABLE = VARIABLE &amp; ~MASK</code> is required, leading to <code>DDRB = 0x00010000 | DDRB</code>. Where clearing bits is var <code>VAR = VAR &amp; ~MASK</code>.</p>\n<p>So in summary <code>SET_REG( DDR, B5, 0xFF )</code> means:</p>\n<p>DDRB = ( 0x00010000 &amp; 0xFF ) | ( DDRB &amp;  ~0x00010000 ))</p>\n<hr />\n<h2>Strength:</h2>\n<p>Much easier to understand this macro. As opposed to the bit manipulation?</p>\n<p>Unlike say, arduino. This is still relatively low level code, with just macros. This allows for more effective compiler optimization.</p>\n<p>Also less abstraction than arduino. While this means a bit less portability than arduino. It is not much more work to change pins if you have already macrotized it like <code>#define LEDPIN B5</code>.</p>\n<h2>Weakness:</h2>\n<p>This macro is taking advantage of atmel's naming consistancy for both the register's macro name (e.g <code>DDRx</code> ), and the corresponding bit position (e.g. <code>Pxn</code>).</p>\n<p>This approach only lets you edit one bit at a time. I think I really should give it a better name instead, that is more reflective of what it actually capable of.</p>\n<p>Would SET_REGBIT, be a better name for this?</p>\n<p>You are still abstracting yourself away from the hardware.</p>\n<h2>Improvements?</h2>\n<p>Maybe instead of using <code>Pxn</code> to get the bitmask, I perhaps should really be using something like <code>_BV(DDxn)</code>, as I recall that <code>avr/iom328p.h</code> used in toolchain for atmega328p looks like:</p>\n<pre><code>#define DDRB _SFR_IO8(0x04)\n#define DDB0 0\n#define DDB1 1\n#define DDB2 2\n#define DDB3 3\n</code></pre>\n<p>This might help guard against any weirdness where <code>Pxn</code> does not correspond to <code>DDxn</code> ( PB5 =/= _BV(DDB5) ). But I'll need to know if I should be paranoid enough to take that extra step in making the code a bit more complex to handle such edge cases.</p>\n<hr />\n<h2>Below is a copy of the generated file:</h2>\n<pre><code>// Generated @ Sat 11-07-2015 03:17AM 48sec\n/*\n    TITLE:   AVR Augmentation for io.h\n    Purpose: Increase portability, Readability, Save time\n    AUTHOR:  Brian Khuu\n    Version: V2.0\n        Objective of V2:: \n            To basically allow for flexible usage of registers beyond whatever is defined in this.\n                e.g.\n                    Instead of:             SET_PORT( B1, 0xFF) --&gt; Sets bit 1 @ PORTB to 1\t\n                    Want something like:    SET_REG(PORT, B1, OxFF) \n                    This method is more intuitive as well. But works only if the naming convention by Atmel remains consistent in this format::\n                      Register Location: &lt; REGISTER TYPE NAME (e.g. DDR ) &gt; &lt; REGISTER LETTER &gt; ( e.g. DDRB )\n                      Pin Naming:        &lt; REGISTER LETTER &gt; &lt; Pin Number &gt;\n\n                    Thus what I would need to generate in masses is like this::\n                      #define B1_BITMASK PB1\n                      #define B1_NUMBER 1\n                      #define B1_LETTER B\n    Assumption:\n        That you are using io.h (For avr MCU) and\n        that it splits IOs into banks of Port letters each with an word sized of pin numbers\n            e.g. ( PA5 -&gt; Port A pin 5 . Is a macro within io.h )\n        Port letters Supported: A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z\n        Pin numbers Supported: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16\n\n        Also assumes that Pxn is defined, and that registers are named like DDRx or PINx or PORTx etc... (x=letter, n=number)\n\n    cite: initial inspiration from cinderblock &quot;[CODE] [C] Simplifying PORT and DDR #defines for Portability\n           http://www.avrfreaks.net/index.php?name=PNphpBB2&amp;file=viewtopic&amp;t=73829\n    cite: &quot;GET&quot; and &quot;SET&quot; macros from David Jahshan's game_console Template\n\n    Example blink code for the arduino UNO in C located in bottom of this header file\n*/\n\n// These accept letter + number reference only.\n//      e.g. for PA5 -&gt; SET_PORT(A5,0xFF)\n// ( R_ was a cinderblock suggestion, to allow for nested concat operations) \n\n// SINGLE BIT BITFIELD MASK ( Usally defined in atmel studio toolchain )\n// #define _BV(bit) (1 &lt;&lt; (bit))\n\n// Enforce input to be either 0xFF or 0x00 (Since if people use arduino constants of HIGH --&gt; 0x1 . Then it wont be 0xFF)\n#define SET_REG_VAL_CHK(VALUE) ( (VALUE&gt;0) ? (0xFF) : (0x00) )\n\n//SET REGISTER\n    // (1). Allows external #define to de-tokenize\n#define SET_REG( REG_NAME , PIN , VALUE ) R1_SET_REG( REG_NAME , PIN , VALUE )      \n    // Seperate letters and numbers. Via first the `##` concat operation, and then detokanizing the PIN_LETTER and PIN_NUMBER (e.g. B1_LETTER --&gt; B )\n#define R1_SET_REG( REG_NAME , PIN , VALUE ) R2_SET_REG( REG_NAME , PIN, PIN##_LETTER, PIN##_NUMBER, VALUE )     \n#define R2_SET_REG( REG_NAME , PIN, LETTER, NUMBER, VALUE  ) R3_SET_REG( REG_NAME , PIN, LETTER, NUMBER, VALUE )\n    // Now we can use the SET() macro (written by David Jahshan )\n#define R3_SET_REG( REG_NAME , PIN, LETTER, NUMBER, VALUE ) SET(    REG_NAME##LETTER\t,\tPIN##_BITMASK\t,\tSET_REG_VAL_CHK(VALUE)\t)\n\n//GET REGISTER ( Similar method as SET REGISTER)\n#define GET_REG( REG_NAME , PIN ) R1_GET_REG( REG_NAME , PIN )\n#define R1_GET_REG( REG_NAME , PIN ) R2_SET_REG( REG_NAME , PIN, PIN##LETTER, PIN##NUMBER )\n#define R2_GET_REG( REG_NAME , PIN, LETTER, NUMBER ) R3_GET_REG( REG_NAME , PIN, LETTER, NUMBER ) \n#define R3_GET_REG( REG_NAME , PIN, LETTER, NUMBER ) SET(    REG_NAME##LETTER\t,\tPIN##_BITMASK\t)\n\n//// From David Jahshan's SET and GET macro\n// This will not accept letter+number reference, must give PORT and MASK reference\n// e.g. SET_REGISTER( PORTA, _BV(PA6), 0xFF);\n#define SET(REGISTER,MASK,VALUE)\tREGISTER = ((MASK &amp; VALUE) | (REGISTER &amp; ~MASK))\n#define GET(REGISTER,MASK)\t\t\tREGISTER &amp; MASK\n\n// Originally from Steve Karg in http://stackoverflow.com/questions/47981/how-do-you-set-clear-and-toggle-a-single-bit-in-c-c\n// This is included as reference. And also it's handy occationally.\n//Mask\n#define SETMASK(VARIABLE,MASK)\t\tVARIABLE = VARIABLE | MASK\n#define CLEARMASK(VARIABLE,MASK)\tVARIABLE = VARIABLE &amp; ~MASK\n#define TOGGLEMASK(VARIABLE,MASK)\tVARIABLE = VARIABLE ^ MASK\n#define CHECKMASK(VARIABLE,MASK)\tVARIABLE &amp; MASK\n//Single bit\n#define SETBIT(VARIABLE,b)\t\t\t((VARIABLE) |= (1&lt;&lt;(b)))\n#define CLEARBIT(VARIABLE,b)\t\t((VARIABLE) &amp;= ~(1&lt;&lt;(b)))\n#define FLIPBIT(VARIABLE,b)\t\t\t((VARIABLE ^= (1&lt;&lt;(b)))\n#define CHECKBIT(VARIABLE,b)\t\t((VARIABLE) &amp; (1&lt;&lt;(b)))\n\n\n// ~~~~~~~~~~ Pin Letter and Number references ~~~~~~~~~~\n\n// In _BV(PA1) the PA1 represents the bit position of the port in relation to the DDR,PORT,PIN\n//(e.g. DDRA,PORTA,PINA) registers, etc...\n// Where did PA1 etc... come from? It came from the AVR toolchain.\n// It is first either directly defined as Pxn or PORTxn (e.g. in iom328p.h ), but they are essentally equivalent values\n//  as seen in portpins.h which fills in either Pxn or PORTxn with the missing value from the other one.\n// TL;DR: PA1 &lt;--&gt; PORTA1 . Both ultimately sourced from hardware header file like iom328p.h (8-gnu-toolchain\\include)\n\n\n//## Pin Letter:A\n\n    //Pxn: A0\n    #define A0_BITMASK   _BV(PA0)\n    #define A0_LETTER    A\n    #define A0_NUMBER    0\n\n    //Pxn: A1\n    #define A1_BITMASK   _BV(PA1)\n    #define A1_LETTER    A\n    #define A1_NUMBER    1\n\n    //Pxn: A2\n    #define A2_BITMASK   _BV(PA2)\n    #define A2_LETTER    A\n    #define A2_NUMBER    2\n\n    //Pxn: A3\n    #define A3_BITMASK   _BV(PA3)\n    #define A3_LETTER    A\n    #define A3_NUMBER    3\n\n    //Pxn: A4\n    #define A4_BITMASK   _BV(PA4)\n    #define A4_LETTER    A\n    #define A4_NUMBER    4\n\n    //Pxn: A5\n    #define A5_BITMASK   _BV(PA5)\n    #define A5_LETTER    A\n    #define A5_NUMBER    5\n\n    //Pxn: A6\n    #define A6_BITMASK   _BV(PA6)\n    #define A6_LETTER    A\n    #define A6_NUMBER    6\n\n    //Pxn: A7\n    #define A7_BITMASK   _BV(PA7)\n    #define A7_LETTER    A\n    #define A7_NUMBER    7\n\n    //Pxn: A8\n    #define A8_BITMASK   _BV(PA8)\n    #define A8_LETTER    A\n    #define A8_NUMBER    8\n\n    //Pxn: A9\n    #define A9_BITMASK   _BV(PA9)\n    #define A9_LETTER    A\n    #define A9_NUMBER    9\n\n    //Pxn: A10\n    #define A10_BITMASK   _BV(PA10)\n    #define A10_LETTER    A\n    #define A10_NUMBER    10\n\n    //Pxn: A12\n    #define A12_BITMASK   _BV(PA12)\n    #define A12_LETTER    A\n    #define A12_NUMBER    12\n\n    //Pxn: A13\n    #define A13_BITMASK   _BV(PA13)\n    #define A13_LETTER    A\n    #define A13_NUMBER    13\n\n    //Pxn: A14\n    #define A14_BITMASK   _BV(PA14)\n    #define A14_LETTER    A\n    #define A14_NUMBER    14\n\n    //Pxn: A15\n    #define A15_BITMASK   _BV(PA15)\n    #define A15_LETTER    A\n    #define A15_NUMBER    15\n\n    //Pxn: A16\n    #define A16_BITMASK   _BV(PA16)\n    #define A16_LETTER    A\n    #define A16_NUMBER    16\n\n\n//## Pin Letter:B\n\n    //Pxn: B0\n    #define B0_BITMASK   _BV(PB0)\n    #define B0_LETTER    B\n    #define B0_NUMBER    0\n\n    //Pxn: B1\n    #define B1_BITMASK   _BV(PB1)\n    #define B1_LETTER    B\n    #define B1_NUMBER    1\n\n    //Pxn: B2\n    #define B2_BITMASK   _BV(PB2)\n    #define B2_LETTER    B\n    #define B2_NUMBER    2\n\n    //Pxn: B3\n    #define B3_BITMASK   _BV(PB3)\n    #define B3_LETTER    B\n    #define B3_NUMBER    3\n\n    //Pxn: B4\n    #define B4_BITMASK   _BV(PB4)\n    #define B4_LETTER    B\n    #define B4_NUMBER    4\n\n    //Pxn: B5\n    #define B5_BITMASK   _BV(PB5)\n    #define B5_LETTER    B\n    #define B5_NUMBER    5\n\n    //Pxn: B6\n    #define B6_BITMASK   _BV(PB6)\n    #define B6_LETTER    B\n    #define B6_NUMBER    6\n\n    //Pxn: B7\n    #define B7_BITMASK   _BV(PB7)\n    #define B7_LETTER    B\n    #define B7_NUMBER    7\n\n    //Pxn: B8\n    #define B8_BITMASK   _BV(PB8)\n    #define B8_LETTER    B\n    #define B8_NUMBER    8\n\n    //Pxn: B9\n    #define B9_BITMASK   _BV(PB9)\n    #define B9_LETTER    B\n    #define B9_NUMBER    9\n\n    //Pxn: B10\n    #define B10_BITMASK   _BV(PB10)\n    #define B10_LETTER    B\n    #define B10_NUMBER    10\n\n    //Pxn: B12\n    #define B12_BITMASK   _BV(PB12)\n    #define B12_LETTER    B\n    #define B12_NUMBER    12\n\n    //Pxn: B13\n    #define B13_BITMASK   _BV(PB13)\n    #define B13_LETTER    B\n    #define B13_NUMBER    13\n\n    //Pxn: B14\n    #define B14_BITMASK   _BV(PB14)\n    #define B14_LETTER    B\n    #define B14_NUMBER    14\n\n    //Pxn: B15\n    #define B15_BITMASK   _BV(PB15)\n    #define B15_LETTER    B\n    #define B15_NUMBER    15\n\n    //Pxn: B16\n    #define B16_BITMASK   _BV(PB16)\n    #define B16_LETTER    B\n    #define B16_NUMBER    16\n\n\n//## Pin Letter:C\n\n    //Pxn: C0\n    #define C0_BITMASK   _BV(PC0)\n    #define C0_LETTER    C\n    #define C0_NUMBER    0\n\n    //Pxn: C1\n    #define C1_BITMASK   _BV(PC1)\n    #define C1_LETTER    C\n    #define C1_NUMBER    1\n\n    //Pxn: C2\n    #define C2_BITMASK   _BV(PC2)\n    #define C2_LETTER    C\n    #define C2_NUMBER    2\n\n    //Pxn: C3\n    #define C3_BITMASK   _BV(PC3)\n    #define C3_LETTER    C\n    #define C3_NUMBER    3\n\n    //Pxn: C4\n    #define C4_BITMASK   _BV(PC4)\n    #define C4_LETTER    C\n    #define C4_NUMBER    4\n\n    //Pxn: C5\n    #define C5_BITMASK   _BV(PC5)\n    #define C5_LETTER    C\n    #define C5_NUMBER    5\n\n    //Pxn: C6\n    #define C6_BITMASK   _BV(PC6)\n    #define C6_LETTER    C\n    #define C6_NUMBER    6\n\n    //Pxn: C7\n    #define C7_BITMASK   _BV(PC7)\n    #define C7_LETTER    C\n    #define C7_NUMBER    7\n\n    //Pxn: C8\n    #define C8_BITMASK   _BV(PC8)\n    #define C8_LETTER    C\n    #define C8_NUMBER    8\n\n    //Pxn: C9\n    #define C9_BITMASK   _BV(PC9)\n    #define C9_LETTER    C\n    #define C9_NUMBER    9\n\n    //Pxn: C10\n    #define C10_BITMASK   _BV(PC10)\n    #define C10_LETTER    C\n    #define C10_NUMBER    10\n\n    //Pxn: C12\n    #define C12_BITMASK   _BV(PC12)\n    #define C12_LETTER    C\n    #define C12_NUMBER    12\n\n    //Pxn: C13\n    #define C13_BITMASK   _BV(PC13)\n    #define C13_LETTER    C\n    #define C13_NUMBER    13\n\n    //Pxn: C14\n    #define C14_BITMASK   _BV(PC14)\n    #define C14_LETTER    C\n    #define C14_NUMBER    14\n\n    //Pxn: C15\n    #define C15_BITMASK   _BV(PC15)\n    #define C15_LETTER    C\n    #define C15_NUMBER    15\n\n    //Pxn: C16\n    #define C16_BITMASK   _BV(PC16)\n    #define C16_LETTER    C\n    #define C16_NUMBER    16\n\n\n//## Pin Letter:D\n\n    //Pxn: D0\n    #define D0_BITMASK   _BV(PD0)\n    #define D0_LETTER    D\n    #define D0_NUMBER    0\n\n    //Pxn: D1\n    #define D1_BITMASK   _BV(PD1)\n    #define D1_LETTER    D\n    #define D1_NUMBER    1\n\n    //Pxn: D2\n    #define D2_BITMASK   _BV(PD2)\n    #define D2_LETTER    D\n    #define D2_NUMBER    2\n\n    //Pxn: D3\n    #define D3_BITMASK   _BV(PD3)\n    #define D3_LETTER    D\n    #define D3_NUMBER    3\n\n    //Pxn: D4\n    #define D4_BITMASK   _BV(PD4)\n    #define D4_LETTER    D\n    #define D4_NUMBER    4\n\n    //Pxn: D5\n    #define D5_BITMASK   _BV(PD5)\n    #define D5_LETTER    D\n    #define D5_NUMBER    5\n\n    //Pxn: D6\n    #define D6_BITMASK   _BV(PD6)\n    #define D6_LETTER    D\n    #define D6_NUMBER    6\n\n    //Pxn: D7\n    #define D7_BITMASK   _BV(PD7)\n    #define D7_LETTER    D\n    #define D7_NUMBER    7\n\n    //Pxn: D8\n    #define D8_BITMASK   _BV(PD8)\n    #define D8_LETTER    D\n    #define D8_NUMBER    8\n\n    //Pxn: D9\n    #define D9_BITMASK   _BV(PD9)\n    #define D9_LETTER    D\n    #define D9_NUMBER    9\n\n    //Pxn: D10\n    #define D10_BITMASK   _BV(PD10)\n    #define D10_LETTER    D\n    #define D10_NUMBER    10\n\n    //Pxn: D12\n    #define D12_BITMASK   _BV(PD12)\n    #define D12_LETTER    D\n    #define D12_NUMBER    12\n\n    //Pxn: D13\n    #define D13_BITMASK   _BV(PD13)\n    #define D13_LETTER    D\n    #define D13_NUMBER    13\n\n    //Pxn: D14\n    #define D14_BITMASK   _BV(PD14)\n    #define D14_LETTER    D\n    #define D14_NUMBER    14\n\n    //Pxn: D15\n    #define D15_BITMASK   _BV(PD15)\n    #define D15_LETTER    D\n    #define D15_NUMBER    15\n\n    //Pxn: D16\n    #define D16_BITMASK   _BV(PD16)\n    #define D16_LETTER    D\n    #define D16_NUMBER    16\n\n\n//## Pin Letter:E\n\n    //Pxn: E0\n    #define E0_BITMASK   _BV(PE0)\n    #define E0_LETTER    E\n    #define E0_NUMBER    0\n\n    //Pxn: E1\n    #define E1_BITMASK   _BV(PE1)\n    #define E1_LETTER    E\n    #define E1_NUMBER    1\n\n    //Pxn: E2\n    #define E2_BITMASK   _BV(PE2)\n    #define E2_LETTER    E\n    #define E2_NUMBER    2\n\n    //Pxn: E3\n    #define E3_BITMASK   _BV(PE3)\n    #define E3_LETTER    E\n    #define E3_NUMBER    3\n\n    //Pxn: E4\n    #define E4_BITMASK   _BV(PE4)\n    #define E4_LETTER    E\n    #define E4_NUMBER    4\n\n    //Pxn: E5\n    #define E5_BITMASK   _BV(PE5)\n    #define E5_LETTER    E\n    #define E5_NUMBER    5\n\n    //Pxn: E6\n    #define E6_BITMASK   _BV(PE6)\n    #define E6_LETTER    E\n    #define E6_NUMBER    6\n\n    //Pxn: E7\n    #define E7_BITMASK   _BV(PE7)\n    #define E7_LETTER    E\n    #define E7_NUMBER    7\n\n    //Pxn: E8\n    #define E8_BITMASK   _BV(PE8)\n    #define E8_LETTER    E\n    #define E8_NUMBER    8\n\n    //Pxn: E9\n    #define E9_BITMASK   _BV(PE9)\n    #define E9_LETTER    E\n    #define E9_NUMBER    9\n\n    //Pxn: E10\n    #define E10_BITMASK   _BV(PE10)\n    #define E10_LETTER    E\n    #define E10_NUMBER    10\n\n    //Pxn: E12\n    #define E12_BITMASK   _BV(PE12)\n    #define E12_LETTER    E\n    #define E12_NUMBER    12\n\n    //Pxn: E13\n    #define E13_BITMASK   _BV(PE13)\n    #define E13_LETTER    E\n    #define E13_NUMBER    13\n\n    //Pxn: E14\n    #define E14_BITMASK   _BV(PE14)\n    #define E14_LETTER    E\n    #define E14_NUMBER    14\n\n    //Pxn: E15\n    #define E15_BITMASK   _BV(PE15)\n    #define E15_LETTER    E\n    #define E15_NUMBER    15\n\n    //Pxn: E16\n    #define E16_BITMASK   _BV(PE16)\n    #define E16_LETTER    E\n    #define E16_NUMBER    16\n\n\n//## Pin Letter:F\n\n    //Pxn: F0\n    #define F0_BITMASK   _BV(PF0)\n    #define F0_LETTER    F\n    #define F0_NUMBER    0\n\n    //Pxn: F1\n    #define F1_BITMASK   _BV(PF1)\n    #define F1_LETTER    F\n    #define F1_NUMBER    1\n\n    //Pxn: F2\n    #define F2_BITMASK   _BV(PF2)\n    #define F2_LETTER    F\n    #define F2_NUMBER    2\n\n    //Pxn: F3\n    #define F3_BITMASK   _BV(PF3)\n    #define F3_LETTER    F\n    #define F3_NUMBER    3\n\n    //Pxn: F4\n    #define F4_BITMASK   _BV(PF4)\n    #define F4_LETTER    F\n    #define F4_NUMBER    4\n\n    //Pxn: F5\n    #define F5_BITMASK   _BV(PF5)\n    #define F5_LETTER    F\n    #define F5_NUMBER    5\n\n    //Pxn: F6\n    #define F6_BITMASK   _BV(PF6)\n    #define F6_LETTER    F\n    #define F6_NUMBER    6\n\n    //Pxn: F7\n    #define F7_BITMASK   _BV(PF7)\n    #define F7_LETTER    F\n    #define F7_NUMBER    7\n\n    //Pxn: F8\n    #define F8_BITMASK   _BV(PF8)\n    #define F8_LETTER    F\n    #define F8_NUMBER    8\n\n    //Pxn: F9\n    #define F9_BITMASK   _BV(PF9)\n    #define F9_LETTER    F\n    #define F9_NUMBER    9\n\n    //Pxn: F10\n    #define F10_BITMASK   _BV(PF10)\n    #define F10_LETTER    F\n    #define F10_NUMBER    10\n\n    //Pxn: F12\n    #define F12_BITMASK   _BV(PF12)\n    #define F12_LETTER    F\n    #define F12_NUMBER    12\n\n    //Pxn: F13\n    #define F13_BITMASK   _BV(PF13)\n    #define F13_LETTER    F\n    #define F13_NUMBER    13\n\n    //Pxn: F14\n    #define F14_BITMASK   _BV(PF14)\n    #define F14_LETTER    F\n    #define F14_NUMBER    14\n\n    //Pxn: F15\n    #define F15_BITMASK   _BV(PF15)\n    #define F15_LETTER    F\n    #define F15_NUMBER    15\n\n    //Pxn: F16\n    #define F16_BITMASK   _BV(PF16)\n    #define F16_LETTER    F\n    #define F16_NUMBER    16\n\n\n//## Pin Letter:G\n\n    //Pxn: G0\n    #define G0_BITMASK   _BV(PG0)\n    #define G0_LETTER    G\n    #define G0_NUMBER    0\n\n    //Pxn: G1\n    #define G1_BITMASK   _BV(PG1)\n    #define G1_LETTER    G\n    #define G1_NUMBER    1\n\n    //Pxn: G2\n    #define G2_BITMASK   _BV(PG2)\n    #define G2_LETTER    G\n    #define G2_NUMBER    2\n\n    //Pxn: G3\n    #define G3_BITMASK   _BV(PG3)\n    #define G3_LETTER    G\n    #define G3_NUMBER    3\n\n    //Pxn: G4\n    #define G4_BITMASK   _BV(PG4)\n    #define G4_LETTER    G\n    #define G4_NUMBER    4\n\n    //Pxn: G5\n    #define G5_BITMASK   _BV(PG5)\n    #define G5_LETTER    G\n    #define G5_NUMBER    5\n\n    //Pxn: G6\n    #define G6_BITMASK   _BV(PG6)\n    #define G6_LETTER    G\n    #define G6_NUMBER    6\n\n    //Pxn: G7\n    #define G7_BITMASK   _BV(PG7)\n    #define G7_LETTER    G\n    #define G7_NUMBER    7\n\n    //Pxn: G8\n    #define G8_BITMASK   _BV(PG8)\n    #define G8_LETTER    G\n    #define G8_NUMBER    8\n\n    //Pxn: G9\n    #define G9_BITMASK   _BV(PG9)\n    #define G9_LETTER    G\n    #define G9_NUMBER    9\n\n    //Pxn: G10\n    #define G10_BITMASK   _BV(PG10)\n    #define G10_LETTER    G\n    #define G10_NUMBER    10\n\n    //Pxn: G12\n    #define G12_BITMASK   _BV(PG12)\n    #define G12_LETTER    G\n    #define G12_NUMBER    12\n\n    //Pxn: G13\n    #define G13_BITMASK   _BV(PG13)\n    #define G13_LETTER    G\n    #define G13_NUMBER    13\n\n    //Pxn: G14\n    #define G14_BITMASK   _BV(PG14)\n    #define G14_LETTER    G\n    #define G14_NUMBER    14\n\n    //Pxn: G15\n    #define G15_BITMASK   _BV(PG15)\n    #define G15_LETTER    G\n    #define G15_NUMBER    15\n\n    //Pxn: G16\n    #define G16_BITMASK   _BV(PG16)\n    #define G16_LETTER    G\n    #define G16_NUMBER    16\n\n\n//## Pin Letter:H\n\n    //Pxn: H0\n    #define H0_BITMASK   _BV(PH0)\n    #define H0_LETTER    H\n    #define H0_NUMBER    0\n\n    //Pxn: H1\n    #define H1_BITMASK   _BV(PH1)\n    #define H1_LETTER    H\n    #define H1_NUMBER    1\n\n    //Pxn: H2\n    #define H2_BITMASK   _BV(PH2)\n    #define H2_LETTER    H\n    #define H2_NUMBER    2\n\n    //Pxn: H3\n    #define H3_BITMASK   _BV(PH3)\n    #define H3_LETTER    H\n    #define H3_NUMBER    3\n\n    //Pxn: H4\n    #define H4_BITMASK   _BV(PH4)\n    #define H4_LETTER    H\n    #define H4_NUMBER    4\n\n    //Pxn: H5\n    #define H5_BITMASK   _BV(PH5)\n    #define H5_LETTER    H\n    #define H5_NUMBER    5\n\n    //Pxn: H6\n    #define H6_BITMASK   _BV(PH6)\n    #define H6_LETTER    H\n    #define H6_NUMBER    6\n\n    //Pxn: H7\n    #define H7_BITMASK   _BV(PH7)\n    #define H7_LETTER    H\n    #define H7_NUMBER    7\n\n    //Pxn: H8\n    #define H8_BITMASK   _BV(PH8)\n    #define H8_LETTER    H\n    #define H8_NUMBER    8\n\n    //Pxn: H9\n    #define H9_BITMASK   _BV(PH9)\n    #define H9_LETTER    H\n    #define H9_NUMBER    9\n\n    //Pxn: H10\n    #define H10_BITMASK   _BV(PH10)\n    #define H10_LETTER    H\n    #define H10_NUMBER    10\n\n    //Pxn: H12\n    #define H12_BITMASK   _BV(PH12)\n    #define H12_LETTER    H\n    #define H12_NUMBER    12\n\n    //Pxn: H13\n    #define H13_BITMASK   _BV(PH13)\n    #define H13_LETTER    H\n    #define H13_NUMBER    13\n\n    //Pxn: H14\n    #define H14_BITMASK   _BV(PH14)\n    #define H14_LETTER    H\n    #define H14_NUMBER    14\n\n    //Pxn: H15\n    #define H15_BITMASK   _BV(PH15)\n    #define H15_LETTER    H\n    #define H15_NUMBER    15\n\n    //Pxn: H16\n    #define H16_BITMASK   _BV(PH16)\n    #define H16_LETTER    H\n    #define H16_NUMBER    16\n\n\n//## Pin Letter:I\n\n    //Pxn: I0\n    #define I0_BITMASK   _BV(PI0)\n    #define I0_LETTER    I\n    #define I0_NUMBER    0\n\n    //Pxn: I1\n    #define I1_BITMASK   _BV(PI1)\n    #define I1_LETTER    I\n    #define I1_NUMBER    1\n\n    //Pxn: I2\n    #define I2_BITMASK   _BV(PI2)\n    #define I2_LETTER    I\n    #define I2_NUMBER    2\n\n    //Pxn: I3\n    #define I3_BITMASK   _BV(PI3)\n    #define I3_LETTER    I\n    #define I3_NUMBER    3\n\n    //Pxn: I4\n    #define I4_BITMASK   _BV(PI4)\n    #define I4_LETTER    I\n    #define I4_NUMBER    4\n\n    //Pxn: I5\n    #define I5_BITMASK   _BV(PI5)\n    #define I5_LETTER    I\n    #define I5_NUMBER    5\n\n    //Pxn: I6\n    #define I6_BITMASK   _BV(PI6)\n    #define I6_LETTER    I\n    #define I6_NUMBER    6\n\n    //Pxn: I7\n    #define I7_BITMASK   _BV(PI7)\n    #define I7_LETTER    I\n    #define I7_NUMBER    7\n\n    //Pxn: I8\n    #define I8_BITMASK   _BV(PI8)\n    #define I8_LETTER    I\n    #define I8_NUMBER    8\n\n    //Pxn: I9\n    #define I9_BITMASK   _BV(PI9)\n    #define I9_LETTER    I\n    #define I9_NUMBER    9\n\n    //Pxn: I10\n    #define I10_BITMASK   _BV(PI10)\n    #define I10_LETTER    I\n    #define I10_NUMBER    10\n\n    //Pxn: I12\n    #define I12_BITMASK   _BV(PI12)\n    #define I12_LETTER    I\n    #define I12_NUMBER    12\n\n    //Pxn: I13\n    #define I13_BITMASK   _BV(PI13)\n    #define I13_LETTER    I\n    #define I13_NUMBER    13\n\n    //Pxn: I14\n    #define I14_BITMASK   _BV(PI14)\n    #define I14_LETTER    I\n    #define I14_NUMBER    14\n\n    //Pxn: I15\n    #define I15_BITMASK   _BV(PI15)\n    #define I15_LETTER    I\n    #define I15_NUMBER    15\n\n    //Pxn: I16\n    #define I16_BITMASK   _BV(PI16)\n    #define I16_LETTER    I\n    #define I16_NUMBER    16\n\n\n//## Pin Letter:J\n\n    //Pxn: J0\n    #define J0_BITMASK   _BV(PJ0)\n    #define J0_LETTER    J\n    #define J0_NUMBER    0\n\n    //Pxn: J1\n    #define J1_BITMASK   _BV(PJ1)\n    #define J1_LETTER    J\n    #define J1_NUMBER    1\n\n    //Pxn: J2\n    #define J2_BITMASK   _BV(PJ2)\n    #define J2_LETTER    J\n    #define J2_NUMBER    2\n\n    //Pxn: J3\n    #define J3_BITMASK   _BV(PJ3)\n    #define J3_LETTER    J\n    #define J3_NUMBER    3\n\n    //Pxn: J4\n    #define J4_BITMASK   _BV(PJ4)\n    #define J4_LETTER    J\n    #define J4_NUMBER    4\n\n    //Pxn: J5\n    #define J5_BITMASK   _BV(PJ5)\n    #define J5_LETTER    J\n    #define J5_NUMBER    5\n\n    //Pxn: J6\n    #define J6_BITMASK   _BV(PJ6)\n    #define J6_LETTER    J\n    #define J6_NUMBER    6\n\n    //Pxn: J7\n    #define J7_BITMASK   _BV(PJ7)\n    #define J7_LETTER    J\n    #define J7_NUMBER    7\n\n    //Pxn: J8\n    #define J8_BITMASK   _BV(PJ8)\n    #define J8_LETTER    J\n    #define J8_NUMBER    8\n\n    //Pxn: J9\n    #define J9_BITMASK   _BV(PJ9)\n    #define J9_LETTER    J\n    #define J9_NUMBER    9\n\n    //Pxn: J10\n    #define J10_BITMASK   _BV(PJ10)\n    #define J10_LETTER    J\n    #define J10_NUMBER    10\n\n    //Pxn: J12\n    #define J12_BITMASK   _BV(PJ12)\n    #define J12_LETTER    J\n    #define J12_NUMBER    12\n\n    //Pxn: J13\n    #define J13_BITMASK   _BV(PJ13)\n    #define J13_LETTER    J\n    #define J13_NUMBER    13\n\n    //Pxn: J14\n    #define J14_BITMASK   _BV(PJ14)\n    #define J14_LETTER    J\n    #define J14_NUMBER    14\n\n    //Pxn: J15\n    #define J15_BITMASK   _BV(PJ15)\n    #define J15_LETTER    J\n    #define J15_NUMBER    15\n\n    //Pxn: J16\n    #define J16_BITMASK   _BV(PJ16)\n    #define J16_LETTER    J\n    #define J16_NUMBER    16\n\n\n//## Pin Letter:K\n\n    //Pxn: K0\n    #define K0_BITMASK   _BV(PK0)\n    #define K0_LETTER    K\n    #define K0_NUMBER    0\n\n    //Pxn: K1\n    #define K1_BITMASK   _BV(PK1)\n    #define K1_LETTER    K\n    #define K1_NUMBER    1\n\n    //Pxn: K2\n    #define K2_BITMASK   _BV(PK2)\n    #define K2_LETTER    K\n    #define K2_NUMBER    2\n\n    //Pxn: K3\n    #define K3_BITMASK   _BV(PK3)\n    #define K3_LETTER    K\n    #define K3_NUMBER    3\n\n    //Pxn: K4\n    #define K4_BITMASK   _BV(PK4)\n    #define K4_LETTER    K\n    #define K4_NUMBER    4\n\n    //Pxn: K5\n    #define K5_BITMASK   _BV(PK5)\n    #define K5_LETTER    K\n    #define K5_NUMBER    5\n\n    //Pxn: K6\n    #define K6_BITMASK   _BV(PK6)\n    #define K6_LETTER    K\n    #define K6_NUMBER    6\n\n    //Pxn: K7\n    #define K7_BITMASK   _BV(PK7)\n    #define K7_LETTER    K\n    #define K7_NUMBER    7\n\n    //Pxn: K8\n    #define K8_BITMASK   _BV(PK8)\n    #define K8_LETTER    K\n    #define K8_NUMBER    8\n\n    //Pxn: K9\n    #define K9_BITMASK   _BV(PK9)\n    #define K9_LETTER    K\n    #define K9_NUMBER    9\n\n    //Pxn: K10\n    #define K10_BITMASK   _BV(PK10)\n    #define K10_LETTER    K\n    #define K10_NUMBER    10\n\n    //Pxn: K12\n    #define K12_BITMASK   _BV(PK12)\n    #define K12_LETTER    K\n    #define K12_NUMBER    12\n\n    //Pxn: K13\n    #define K13_BITMASK   _BV(PK13)\n    #define K13_LETTER    K\n    #define K13_NUMBER    13\n\n    //Pxn: K14\n    #define K14_BITMASK   _BV(PK14)\n    #define K14_LETTER    K\n    #define K14_NUMBER    14\n\n    //Pxn: K15\n    #define K15_BITMASK   _BV(PK15)\n    #define K15_LETTER    K\n    #define K15_NUMBER    15\n\n    //Pxn: K16\n    #define K16_BITMASK   _BV(PK16)\n    #define K16_LETTER    K\n    #define K16_NUMBER    16\n\n\n//## Pin Letter:L\n\n    //Pxn: L0\n    #define L0_BITMASK   _BV(PL0)\n    #define L0_LETTER    L\n    #define L0_NUMBER    0\n\n    //Pxn: L1\n    #define L1_BITMASK   _BV(PL1)\n    #define L1_LETTER    L\n    #define L1_NUMBER    1\n\n    //Pxn: L2\n    #define L2_BITMASK   _BV(PL2)\n    #define L2_LETTER    L\n    #define L2_NUMBER    2\n\n    //Pxn: L3\n    #define L3_BITMASK   _BV(PL3)\n    #define L3_LETTER    L\n    #define L3_NUMBER    3\n\n    //Pxn: L4\n    #define L4_BITMASK   _BV(PL4)\n    #define L4_LETTER    L\n    #define L4_NUMBER    4\n\n    //Pxn: L5\n    #define L5_BITMASK   _BV(PL5)\n    #define L5_LETTER    L\n    #define L5_NUMBER    5\n\n    //Pxn: L6\n    #define L6_BITMASK   _BV(PL6)\n    #define L6_LETTER    L\n    #define L6_NUMBER    6\n\n    //Pxn: L7\n    #define L7_BITMASK   _BV(PL7)\n    #define L7_LETTER    L\n    #define L7_NUMBER    7\n\n    //Pxn: L8\n    #define L8_BITMASK   _BV(PL8)\n    #define L8_LETTER    L\n    #define L8_NUMBER    8\n\n    //Pxn: L9\n    #define L9_BITMASK   _BV(PL9)\n    #define L9_LETTER    L\n    #define L9_NUMBER    9\n\n    //Pxn: L10\n    #define L10_BITMASK   _BV(PL10)\n    #define L10_LETTER    L\n    #define L10_NUMBER    10\n\n    //Pxn: L12\n    #define L12_BITMASK   _BV(PL12)\n    #define L12_LETTER    L\n    #define L12_NUMBER    12\n\n    //Pxn: L13\n    #define L13_BITMASK   _BV(PL13)\n    #define L13_LETTER    L\n    #define L13_NUMBER    13\n\n    //Pxn: L14\n    #define L14_BITMASK   _BV(PL14)\n    #define L14_LETTER    L\n    #define L14_NUMBER    14\n\n    //Pxn: L15\n    #define L15_BITMASK   _BV(PL15)\n    #define L15_LETTER    L\n    #define L15_NUMBER    15\n\n    //Pxn: L16\n    #define L16_BITMASK   _BV(PL16)\n    #define L16_LETTER    L\n    #define L16_NUMBER    16\n\n\n//## Pin Letter:M\n\n    //Pxn: M0\n    #define M0_BITMASK   _BV(PM0)\n    #define M0_LETTER    M\n    #define M0_NUMBER    0\n\n    //Pxn: M1\n    #define M1_BITMASK   _BV(PM1)\n    #define M1_LETTER    M\n    #define M1_NUMBER    1\n\n    //Pxn: M2\n    #define M2_BITMASK   _BV(PM2)\n    #define M2_LETTER    M\n    #define M2_NUMBER    2\n\n    //Pxn: M3\n    #define M3_BITMASK   _BV(PM3)\n    #define M3_LETTER    M\n    #define M3_NUMBER    3\n\n    //Pxn: M4\n    #define M4_BITMASK   _BV(PM4)\n    #define M4_LETTER    M\n    #define M4_NUMBER    4\n\n    //Pxn: M5\n    #define M5_BITMASK   _BV(PM5)\n    #define M5_LETTER    M\n    #define M5_NUMBER    5\n\n    //Pxn: M6\n    #define M6_BITMASK   _BV(PM6)\n    #define M6_LETTER    M\n    #define M6_NUMBER    6\n\n    //Pxn: M7\n    #define M7_BITMASK   _BV(PM7)\n    #define M7_LETTER    M\n    #define M7_NUMBER    7\n\n    //Pxn: M8\n    #define M8_BITMASK   _BV(PM8)\n    #define M8_LETTER    M\n    #define M8_NUMBER    8\n\n    //Pxn: M9\n    #define M9_BITMASK   _BV(PM9)\n    #define M9_LETTER    M\n    #define M9_NUMBER    9\n\n    //Pxn: M10\n    #define M10_BITMASK   _BV(PM10)\n    #define M10_LETTER    M\n    #define M10_NUMBER    10\n\n    //Pxn: M12\n    #define M12_BITMASK   _BV(PM12)\n    #define M12_LETTER    M\n    #define M12_NUMBER    12\n\n    //Pxn: M13\n    #define M13_BITMASK   _BV(PM13)\n    #define M13_LETTER    M\n    #define M13_NUMBER    13\n\n    //Pxn: M14\n    #define M14_BITMASK   _BV(PM14)\n    #define M14_LETTER    M\n    #define M14_NUMBER    14\n\n    //Pxn: M15\n    #define M15_BITMASK   _BV(PM15)\n    #define M15_LETTER    M\n    #define M15_NUMBER    15\n\n    //Pxn: M16\n    #define M16_BITMASK   _BV(PM16)\n    #define M16_LETTER    M\n    #define M16_NUMBER    16\n\n\n//## Pin Letter:N\n\n    //Pxn: N0\n    #define N0_BITMASK   _BV(PN0)\n    #define N0_LETTER    N\n    #define N0_NUMBER    0\n\n    //Pxn: N1\n    #define N1_BITMASK   _BV(PN1)\n    #define N1_LETTER    N\n    #define N1_NUMBER    1\n\n    //Pxn: N2\n    #define N2_BITMASK   _BV(PN2)\n    #define N2_LETTER    N\n    #define N2_NUMBER    2\n\n    //Pxn: N3\n    #define N3_BITMASK   _BV(PN3)\n    #define N3_LETTER    N\n    #define N3_NUMBER    3\n\n    //Pxn: N4\n    #define N4_BITMASK   _BV(PN4)\n    #define N4_LETTER    N\n    #define N4_NUMBER    4\n\n    //Pxn: N5\n    #define N5_BITMASK   _BV(PN5)\n    #define N5_LETTER    N\n    #define N5_NUMBER    5\n\n    //Pxn: N6\n    #define N6_BITMASK   _BV(PN6)\n    #define N6_LETTER    N\n    #define N6_NUMBER    6\n\n    //Pxn: N7\n    #define N7_BITMASK   _BV(PN7)\n    #define N7_LETTER    N\n    #define N7_NUMBER    7\n\n    //Pxn: N8\n    #define N8_BITMASK   _BV(PN8)\n    #define N8_LETTER    N\n    #define N8_NUMBER    8\n\n    //Pxn: N9\n    #define N9_BITMASK   _BV(PN9)\n    #define N9_LETTER    N\n    #define N9_NUMBER    9\n\n    //Pxn: N10\n    #define N10_BITMASK   _BV(PN10)\n    #define N10_LETTER    N\n    #define N10_NUMBER    10\n\n    //Pxn: N12\n    #define N12_BITMASK   _BV(PN12)\n    #define N12_LETTER    N\n    #define N12_NUMBER    12\n\n    //Pxn: N13\n    #define N13_BITMASK   _BV(PN13)\n    #define N13_LETTER    N\n    #define N13_NUMBER    13\n\n    //Pxn: N14\n    #define N14_BITMASK   _BV(PN14)\n    #define N14_LETTER    N\n    #define N14_NUMBER    14\n\n    //Pxn: N15\n    #define N15_BITMASK   _BV(PN15)\n    #define N15_LETTER    N\n    #define N15_NUMBER    15\n\n    //Pxn: N16\n    #define N16_BITMASK   _BV(PN16)\n    #define N16_LETTER    N\n    #define N16_NUMBER    16\n\n\n//## Pin Letter:O\n\n    //Pxn: O0\n    #define O0_BITMASK   _BV(PO0)\n    #define O0_LETTER    O\n    #define O0_NUMBER    0\n\n    //Pxn: O1\n    #define O1_BITMASK   _BV(PO1)\n    #define O1_LETTER    O\n    #define O1_NUMBER    1\n\n    //Pxn: O2\n    #define O2_BITMASK   _BV(PO2)\n    #define O2_LETTER    O\n    #define O2_NUMBER    2\n\n    //Pxn: O3\n    #define O3_BITMASK   _BV(PO3)\n    #define O3_LETTER    O\n    #define O3_NUMBER    3\n\n    //Pxn: O4\n    #define O4_BITMASK   _BV(PO4)\n    #define O4_LETTER    O\n    #define O4_NUMBER    4\n\n    //Pxn: O5\n    #define O5_BITMASK   _BV(PO5)\n    #define O5_LETTER    O\n    #define O5_NUMBER    5\n\n    //Pxn: O6\n    #define O6_BITMASK   _BV(PO6)\n    #define O6_LETTER    O\n    #define O6_NUMBER    6\n\n    //Pxn: O7\n    #define O7_BITMASK   _BV(PO7)\n    #define O7_LETTER    O\n    #define O7_NUMBER    7\n\n    //Pxn: O8\n    #define O8_BITMASK   _BV(PO8)\n    #define O8_LETTER    O\n    #define O8_NUMBER    8\n\n    //Pxn: O9\n    #define O9_BITMASK   _BV(PO9)\n    #define O9_LETTER    O\n    #define O9_NUMBER    9\n\n    //Pxn: O10\n    #define O10_BITMASK   _BV(PO10)\n    #define O10_LETTER    O\n    #define O10_NUMBER    10\n\n    //Pxn: O12\n    #define O12_BITMASK   _BV(PO12)\n    #define O12_LETTER    O\n    #define O12_NUMBER    12\n\n    //Pxn: O13\n    #define O13_BITMASK   _BV(PO13)\n    #define O13_LETTER    O\n    #define O13_NUMBER    13\n\n    //Pxn: O14\n    #define O14_BITMASK   _BV(PO14)\n    #define O14_LETTER    O\n    #define O14_NUMBER    14\n\n    //Pxn: O15\n    #define O15_BITMASK   _BV(PO15)\n    #define O15_LETTER    O\n    #define O15_NUMBER    15\n\n    //Pxn: O16\n    #define O16_BITMASK   _BV(PO16)\n    #define O16_LETTER    O\n    #define O16_NUMBER    16\n\n\n//## Pin Letter:P\n\n    //Pxn: P0\n    #define P0_BITMASK   _BV(PP0)\n    #define P0_LETTER    P\n    #define P0_NUMBER    0\n\n    //Pxn: P1\n    #define P1_BITMASK   _BV(PP1)\n    #define P1_LETTER    P\n    #define P1_NUMBER    1\n\n    //Pxn: P2\n    #define P2_BITMASK   _BV(PP2)\n    #define P2_LETTER    P\n    #define P2_NUMBER    2\n\n    //Pxn: P3\n    #define P3_BITMASK   _BV(PP3)\n    #define P3_LETTER    P\n    #define P3_NUMBER    3\n\n    //Pxn: P4\n    #define P4_BITMASK   _BV(PP4)\n    #define P4_LETTER    P\n    #define P4_NUMBER    4\n\n    //Pxn: P5\n    #define P5_BITMASK   _BV(PP5)\n    #define P5_LETTER    P\n    #define P5_NUMBER    5\n\n    //Pxn: P6\n    #define P6_BITMASK   _BV(PP6)\n    #define P6_LETTER    P\n    #define P6_NUMBER    6\n\n    //Pxn: P7\n    #define P7_BITMASK   _BV(PP7)\n    #define P7_LETTER    P\n    #define P7_NUMBER    7\n\n    //Pxn: P8\n    #define P8_BITMASK   _BV(PP8)\n    #define P8_LETTER    P\n    #define P8_NUMBER    8\n\n    //Pxn: P9\n    #define P9_BITMASK   _BV(PP9)\n    #define P9_LETTER    P\n    #define P9_NUMBER    9\n\n    //Pxn: P10\n    #define P10_BITMASK   _BV(PP10)\n    #define P10_LETTER    P\n    #define P10_NUMBER    10\n\n    //Pxn: P12\n    #define P12_BITMASK   _BV(PP12)\n    #define P12_LETTER    P\n    #define P12_NUMBER    12\n\n    //Pxn: P13\n    #define P13_BITMASK   _BV(PP13)\n    #define P13_LETTER    P\n    #define P13_NUMBER    13\n\n    //Pxn: P14\n    #define P14_BITMASK   _BV(PP14)\n    #define P14_LETTER    P\n    #define P14_NUMBER    14\n\n    //Pxn: P15\n    #define P15_BITMASK   _BV(PP15)\n    #define P15_LETTER    P\n    #define P15_NUMBER    15\n\n    //Pxn: P16\n    #define P16_BITMASK   _BV(PP16)\n    #define P16_LETTER    P\n    #define P16_NUMBER    16\n\n\n//## Pin Letter:Q\n\n    //Pxn: Q0\n    #define Q0_BITMASK   _BV(PQ0)\n    #define Q0_LETTER    Q\n    #define Q0_NUMBER    0\n\n    //Pxn: Q1\n    #define Q1_BITMASK   _BV(PQ1)\n    #define Q1_LETTER    Q\n    #define Q1_NUMBER    1\n\n    //Pxn: Q2\n    #define Q2_BITMASK   _BV(PQ2)\n    #define Q2_LETTER    Q\n    #define Q2_NUMBER    2\n\n    //Pxn: Q3\n    #define Q3_BITMASK   _BV(PQ3)\n    #define Q3_LETTER    Q\n    #define Q3_NUMBER    3\n\n    //Pxn: Q4\n    #define Q4_BITMASK   _BV(PQ4)\n    #define Q4_LETTER    Q\n    #define Q4_NUMBER    4\n\n    //Pxn: Q5\n    #define Q5_BITMASK   _BV(PQ5)\n    #define Q5_LETTER    Q\n    #define Q5_NUMBER    5\n\n    //Pxn: Q6\n    #define Q6_BITMASK   _BV(PQ6)\n    #define Q6_LETTER    Q\n    #define Q6_NUMBER    6\n\n    //Pxn: Q7\n    #define Q7_BITMASK   _BV(PQ7)\n    #define Q7_LETTER    Q\n    #define Q7_NUMBER    7\n\n    //Pxn: Q8\n    #define Q8_BITMASK   _BV(PQ8)\n    #define Q8_LETTER    Q\n    #define Q8_NUMBER    8\n\n    //Pxn: Q9\n    #define Q9_BITMASK   _BV(PQ9)\n    #define Q9_LETTER    Q\n    #define Q9_NUMBER    9\n\n    //Pxn: Q10\n    #define Q10_BITMASK   _BV(PQ10)\n    #define Q10_LETTER    Q\n    #define Q10_NUMBER    10\n\n    //Pxn: Q12\n    #define Q12_BITMASK   _BV(PQ12)\n    #define Q12_LETTER    Q\n    #define Q12_NUMBER    12\n\n    //Pxn: Q13\n    #define Q13_BITMASK   _BV(PQ13)\n    #define Q13_LETTER    Q\n    #define Q13_NUMBER    13\n\n    //Pxn: Q14\n    #define Q14_BITMASK   _BV(PQ14)\n    #define Q14_LETTER    Q\n    #define Q14_NUMBER    14\n\n    //Pxn: Q15\n    #define Q15_BITMASK   _BV(PQ15)\n    #define Q15_LETTER    Q\n    #define Q15_NUMBER    15\n\n    //Pxn: Q16\n    #define Q16_BITMASK   _BV(PQ16)\n    #define Q16_LETTER    Q\n    #define Q16_NUMBER    16\n\n\n//## Pin Letter:R\n\n    //Pxn: R0\n    #define R0_BITMASK   _BV(PR0)\n    #define R0_LETTER    R\n    #define R0_NUMBER    0\n\n    //Pxn: R1\n    #define R1_BITMASK   _BV(PR1)\n    #define R1_LETTER    R\n    #define R1_NUMBER    1\n\n    //Pxn: R2\n    #define R2_BITMASK   _BV(PR2)\n    #define R2_LETTER    R\n    #define R2_NUMBER    2\n\n    //Pxn: R3\n    #define R3_BITMASK   _BV(PR3)\n    #define R3_LETTER    R\n    #define R3_NUMBER    3\n\n    //Pxn: R4\n    #define R4_BITMASK   _BV(PR4)\n    #define R4_LETTER    R\n    #define R4_NUMBER    4\n\n    //Pxn: R5\n    #define R5_BITMASK   _BV(PR5)\n    #define R5_LETTER    R\n    #define R5_NUMBER    5\n\n    //Pxn: R6\n    #define R6_BITMASK   _BV(PR6)\n    #define R6_LETTER    R\n    #define R6_NUMBER    6\n\n    //Pxn: R7\n    #define R7_BITMASK   _BV(PR7)\n    #define R7_LETTER    R\n    #define R7_NUMBER    7\n\n    //Pxn: R8\n    #define R8_BITMASK   _BV(PR8)\n    #define R8_LETTER    R\n    #define R8_NUMBER    8\n\n    //Pxn: R9\n    #define R9_BITMASK   _BV(PR9)\n    #define R9_LETTER    R\n    #define R9_NUMBER    9\n\n    //Pxn: R10\n    #define R10_BITMASK   _BV(PR10)\n    #define R10_LETTER    R\n    #define R10_NUMBER    10\n\n    //Pxn: R12\n    #define R12_BITMASK   _BV(PR12)\n    #define R12_LETTER    R\n    #define R12_NUMBER    12\n\n    //Pxn: R13\n    #define R13_BITMASK   _BV(PR13)\n    #define R13_LETTER    R\n    #define R13_NUMBER    13\n\n    //Pxn: R14\n    #define R14_BITMASK   _BV(PR14)\n    #define R14_LETTER    R\n    #define R14_NUMBER    14\n\n    //Pxn: R15\n    #define R15_BITMASK   _BV(PR15)\n    #define R15_LETTER    R\n    #define R15_NUMBER    15\n\n    //Pxn: R16\n    #define R16_BITMASK   _BV(PR16)\n    #define R16_LETTER    R\n    #define R16_NUMBER    16\n\n\n//## Pin Letter:S\n\n    //Pxn: S0\n    #define S0_BITMASK   _BV(PS0)\n    #define S0_LETTER    S\n    #define S0_NUMBER    0\n\n    //Pxn: S1\n    #define S1_BITMASK   _BV(PS1)\n    #define S1_LETTER    S\n    #define S1_NUMBER    1\n\n    //Pxn: S2\n    #define S2_BITMASK   _BV(PS2)\n    #define S2_LETTER    S\n    #define S2_NUMBER    2\n\n    //Pxn: S3\n    #define S3_BITMASK   _BV(PS3)\n    #define S3_LETTER    S\n    #define S3_NUMBER    3\n\n    //Pxn: S4\n    #define S4_BITMASK   _BV(PS4)\n    #define S4_LETTER    S\n    #define S4_NUMBER    4\n\n    //Pxn: S5\n    #define S5_BITMASK   _BV(PS5)\n    #define S5_LETTER    S\n    #define S5_NUMBER    5\n\n    //Pxn: S6\n    #define S6_BITMASK   _BV(PS6)\n    #define S6_LETTER    S\n    #define S6_NUMBER    6\n\n    //Pxn: S7\n    #define S7_BITMASK   _BV(PS7)\n    #define S7_LETTER    S\n    #define S7_NUMBER    7\n\n    //Pxn: S8\n    #define S8_BITMASK   _BV(PS8)\n    #define S8_LETTER    S\n    #define S8_NUMBER    8\n\n    //Pxn: S9\n    #define S9_BITMASK   _BV(PS9)\n    #define S9_LETTER    S\n    #define S9_NUMBER    9\n\n    //Pxn: S10\n    #define S10_BITMASK   _BV(PS10)\n    #define S10_LETTER    S\n    #define S10_NUMBER    10\n\n    //Pxn: S12\n    #define S12_BITMASK   _BV(PS12)\n    #define S12_LETTER    S\n    #define S12_NUMBER    12\n\n    //Pxn: S13\n    #define S13_BITMASK   _BV(PS13)\n    #define S13_LETTER    S\n    #define S13_NUMBER    13\n\n    //Pxn: S14\n    #define S14_BITMASK   _BV(PS14)\n    #define S14_LETTER    S\n    #define S14_NUMBER    14\n\n    //Pxn: S15\n    #define S15_BITMASK   _BV(PS15)\n    #define S15_LETTER    S\n    #define S15_NUMBER    15\n\n    //Pxn: S16\n    #define S16_BITMASK   _BV(PS16)\n    #define S16_LETTER    S\n    #define S16_NUMBER    16\n\n\n//## Pin Letter:T\n\n    //Pxn: T0\n    #define T0_BITMASK   _BV(PT0)\n    #define T0_LETTER    T\n    #define T0_NUMBER    0\n\n    //Pxn: T1\n    #define T1_BITMASK   _BV(PT1)\n    #define T1_LETTER    T\n    #define T1_NUMBER    1\n\n    //Pxn: T2\n    #define T2_BITMASK   _BV(PT2)\n    #define T2_LETTER    T\n    #define T2_NUMBER    2\n\n    //Pxn: T3\n    #define T3_BITMASK   _BV(PT3)\n    #define T3_LETTER    T\n    #define T3_NUMBER    3\n\n    //Pxn: T4\n    #define T4_BITMASK   _BV(PT4)\n    #define T4_LETTER    T\n    #define T4_NUMBER    4\n\n    //Pxn: T5\n    #define T5_BITMASK   _BV(PT5)\n    #define T5_LETTER    T\n    #define T5_NUMBER    5\n\n    //Pxn: T6\n    #define T6_BITMASK   _BV(PT6)\n    #define T6_LETTER    T\n    #define T6_NUMBER    6\n\n    //Pxn: T7\n    #define T7_BITMASK   _BV(PT7)\n    #define T7_LETTER    T\n    #define T7_NUMBER    7\n\n    //Pxn: T8\n    #define T8_BITMASK   _BV(PT8)\n    #define T8_LETTER    T\n    #define T8_NUMBER    8\n\n    //Pxn: T9\n    #define T9_BITMASK   _BV(PT9)\n    #define T9_LETTER    T\n    #define T9_NUMBER    9\n\n    //Pxn: T10\n    #define T10_BITMASK   _BV(PT10)\n    #define T10_LETTER    T\n    #define T10_NUMBER    10\n\n    //Pxn: T12\n    #define T12_BITMASK   _BV(PT12)\n    #define T12_LETTER    T\n    #define T12_NUMBER    12\n\n    //Pxn: T13\n    #define T13_BITMASK   _BV(PT13)\n    #define T13_LETTER    T\n    #define T13_NUMBER    13\n\n    //Pxn: T14\n    #define T14_BITMASK   _BV(PT14)\n    #define T14_LETTER    T\n    #define T14_NUMBER    14\n\n    //Pxn: T15\n    #define T15_BITMASK   _BV(PT15)\n    #define T15_LETTER    T\n    #define T15_NUMBER    15\n\n    //Pxn: T16\n    #define T16_BITMASK   _BV(PT16)\n    #define T16_LETTER    T\n    #define T16_NUMBER    16\n\n\n//## Pin Letter:U\n\n    //Pxn: U0\n    #define U0_BITMASK   _BV(PU0)\n    #define U0_LETTER    U\n    #define U0_NUMBER    0\n\n    //Pxn: U1\n    #define U1_BITMASK   _BV(PU1)\n    #define U1_LETTER    U\n    #define U1_NUMBER    1\n\n    //Pxn: U2\n    #define U2_BITMASK   _BV(PU2)\n    #define U2_LETTER    U\n    #define U2_NUMBER    2\n\n    //Pxn: U3\n    #define U3_BITMASK   _BV(PU3)\n    #define U3_LETTER    U\n    #define U3_NUMBER    3\n\n    //Pxn: U4\n    #define U4_BITMASK   _BV(PU4)\n    #define U4_LETTER    U\n    #define U4_NUMBER    4\n\n    //Pxn: U5\n    #define U5_BITMASK   _BV(PU5)\n    #define U5_LETTER    U\n    #define U5_NUMBER    5\n\n    //Pxn: U6\n    #define U6_BITMASK   _BV(PU6)\n    #define U6_LETTER    U\n    #define U6_NUMBER    6\n\n    //Pxn: U7\n    #define U7_BITMASK   _BV(PU7)\n    #define U7_LETTER    U\n    #define U7_NUMBER    7\n\n    //Pxn: U8\n    #define U8_BITMASK   _BV(PU8)\n    #define U8_LETTER    U\n    #define U8_NUMBER    8\n\n    //Pxn: U9\n    #define U9_BITMASK   _BV(PU9)\n    #define U9_LETTER    U\n    #define U9_NUMBER    9\n\n    //Pxn: U10\n    #define U10_BITMASK   _BV(PU10)\n    #define U10_LETTER    U\n    #define U10_NUMBER    10\n\n    //Pxn: U12\n    #define U12_BITMASK   _BV(PU12)\n    #define U12_LETTER    U\n    #define U12_NUMBER    12\n\n    //Pxn: U13\n    #define U13_BITMASK   _BV(PU13)\n    #define U13_LETTER    U\n    #define U13_NUMBER    13\n\n    //Pxn: U14\n    #define U14_BITMASK   _BV(PU14)\n    #define U14_LETTER    U\n    #define U14_NUMBER    14\n\n    //Pxn: U15\n    #define U15_BITMASK   _BV(PU15)\n    #define U15_LETTER    U\n    #define U15_NUMBER    15\n\n    //Pxn: U16\n    #define U16_BITMASK   _BV(PU16)\n    #define U16_LETTER    U\n    #define U16_NUMBER    16\n\n\n//## Pin Letter:V\n\n    //Pxn: V0\n    #define V0_BITMASK   _BV(PV0)\n    #define V0_LETTER    V\n    #define V0_NUMBER    0\n\n    //Pxn: V1\n    #define V1_BITMASK   _BV(PV1)\n    #define V1_LETTER    V\n    #define V1_NUMBER    1\n\n    //Pxn: V2\n    #define V2_BITMASK   _BV(PV2)\n    #define V2_LETTER    V\n    #define V2_NUMBER    2\n\n    //Pxn: V3\n    #define V3_BITMASK   _BV(PV3)\n    #define V3_LETTER    V\n    #define V3_NUMBER    3\n\n    //Pxn: V4\n    #define V4_BITMASK   _BV(PV4)\n    #define V4_LETTER    V\n    #define V4_NUMBER    4\n\n    //Pxn: V5\n    #define V5_BITMASK   _BV(PV5)\n    #define V5_LETTER    V\n    #define V5_NUMBER    5\n\n    //Pxn: V6\n    #define V6_BITMASK   _BV(PV6)\n    #define V6_LETTER    V\n    #define V6_NUMBER    6\n\n    //Pxn: V7\n    #define V7_BITMASK   _BV(PV7)\n    #define V7_LETTER    V\n    #define V7_NUMBER    7\n\n    //Pxn: V8\n    #define V8_BITMASK   _BV(PV8)\n    #define V8_LETTER    V\n    #define V8_NUMBER    8\n\n    //Pxn: V9\n    #define V9_BITMASK   _BV(PV9)\n    #define V9_LETTER    V\n    #define V9_NUMBER    9\n\n    //Pxn: V10\n    #define V10_BITMASK   _BV(PV10)\n    #define V10_LETTER    V\n    #define V10_NUMBER    10\n\n    //Pxn: V12\n    #define V12_BITMASK   _BV(PV12)\n    #define V12_LETTER    V\n    #define V12_NUMBER    12\n\n    //Pxn: V13\n    #define V13_BITMASK   _BV(PV13)\n    #define V13_LETTER    V\n    #define V13_NUMBER    13\n\n    //Pxn: V14\n    #define V14_BITMASK   _BV(PV14)\n    #define V14_LETTER    V\n    #define V14_NUMBER    14\n\n    //Pxn: V15\n    #define V15_BITMASK   _BV(PV15)\n    #define V15_LETTER    V\n    #define V15_NUMBER    15\n\n    //Pxn: V16\n    #define V16_BITMASK   _BV(PV16)\n    #define V16_LETTER    V\n    #define V16_NUMBER    16\n\n\n//## Pin Letter:W\n\n    //Pxn: W0\n    #define W0_BITMASK   _BV(PW0)\n    #define W0_LETTER    W\n    #define W0_NUMBER    0\n\n    //Pxn: W1\n    #define W1_BITMASK   _BV(PW1)\n    #define W1_LETTER    W\n    #define W1_NUMBER    1\n\n    //Pxn: W2\n    #define W2_BITMASK   _BV(PW2)\n    #define W2_LETTER    W\n    #define W2_NUMBER    2\n\n    //Pxn: W3\n    #define W3_BITMASK   _BV(PW3)\n    #define W3_LETTER    W\n    #define W3_NUMBER    3\n\n    //Pxn: W4\n    #define W4_BITMASK   _BV(PW4)\n    #define W4_LETTER    W\n    #define W4_NUMBER    4\n\n    //Pxn: W5\n    #define W5_BITMASK   _BV(PW5)\n    #define W5_LETTER    W\n    #define W5_NUMBER    5\n\n    //Pxn: W6\n    #define W6_BITMASK   _BV(PW6)\n    #define W6_LETTER    W\n    #define W6_NUMBER    6\n\n    //Pxn: W7\n    #define W7_BITMASK   _BV(PW7)\n    #define W7_LETTER    W\n    #define W7_NUMBER    7\n\n    //Pxn: W8\n    #define W8_BITMASK   _BV(PW8)\n    #define W8_LETTER    W\n    #define W8_NUMBER    8\n\n    //Pxn: W9\n    #define W9_BITMASK   _BV(PW9)\n    #define W9_LETTER    W\n    #define W9_NUMBER    9\n\n    //Pxn: W10\n    #define W10_BITMASK   _BV(PW10)\n    #define W10_LETTER    W\n    #define W10_NUMBER    10\n\n    //Pxn: W12\n    #define W12_BITMASK   _BV(PW12)\n    #define W12_LETTER    W\n    #define W12_NUMBER    12\n\n    //Pxn: W13\n    #define W13_BITMASK   _BV(PW13)\n    #define W13_LETTER    W\n    #define W13_NUMBER    13\n\n    //Pxn: W14\n    #define W14_BITMASK   _BV(PW14)\n    #define W14_LETTER    W\n    #define W14_NUMBER    14\n\n    //Pxn: W15\n    #define W15_BITMASK   _BV(PW15)\n    #define W15_LETTER    W\n    #define W15_NUMBER    15\n\n    //Pxn: W16\n    #define W16_BITMASK   _BV(PW16)\n    #define W16_LETTER    W\n    #define W16_NUMBER    16\n\n\n//## Pin Letter:X\n\n    //Pxn: X0\n    #define X0_BITMASK   _BV(PX0)\n    #define X0_LETTER    X\n    #define X0_NUMBER    0\n\n    //Pxn: X1\n    #define X1_BITMASK   _BV(PX1)\n    #define X1_LETTER    X\n    #define X1_NUMBER    1\n\n    //Pxn: X2\n    #define X2_BITMASK   _BV(PX2)\n    #define X2_LETTER    X\n    #define X2_NUMBER    2\n\n    //Pxn: X3\n    #define X3_BITMASK   _BV(PX3)\n    #define X3_LETTER    X\n    #define X3_NUMBER    3\n\n    //Pxn: X4\n    #define X4_BITMASK   _BV(PX4)\n    #define X4_LETTER    X\n    #define X4_NUMBER    4\n\n    //Pxn: X5\n    #define X5_BITMASK   _BV(PX5)\n    #define X5_LETTER    X\n    #define X5_NUMBER    5\n\n    //Pxn: X6\n    #define X6_BITMASK   _BV(PX6)\n    #define X6_LETTER    X\n    #define X6_NUMBER    6\n\n    //Pxn: X7\n    #define X7_BITMASK   _BV(PX7)\n    #define X7_LETTER    X\n    #define X7_NUMBER    7\n\n    //Pxn: X8\n    #define X8_BITMASK   _BV(PX8)\n    #define X8_LETTER    X\n    #define X8_NUMBER    8\n\n    //Pxn: X9\n    #define X9_BITMASK   _BV(PX9)\n    #define X9_LETTER    X\n    #define X9_NUMBER    9\n\n    //Pxn: X10\n    #define X10_BITMASK   _BV(PX10)\n    #define X10_LETTER    X\n    #define X10_NUMBER    10\n\n    //Pxn: X12\n    #define X12_BITMASK   _BV(PX12)\n    #define X12_LETTER    X\n    #define X12_NUMBER    12\n\n    //Pxn: X13\n    #define X13_BITMASK   _BV(PX13)\n    #define X13_LETTER    X\n    #define X13_NUMBER    13\n\n    //Pxn: X14\n    #define X14_BITMASK   _BV(PX14)\n    #define X14_LETTER    X\n    #define X14_NUMBER    14\n\n    //Pxn: X15\n    #define X15_BITMASK   _BV(PX15)\n    #define X15_LETTER    X\n    #define X15_NUMBER    15\n\n    //Pxn: X16\n    #define X16_BITMASK   _BV(PX16)\n    #define X16_LETTER    X\n    #define X16_NUMBER    16\n\n\n//## Pin Letter:Y\n\n    //Pxn: Y0\n    #define Y0_BITMASK   _BV(PY0)\n    #define Y0_LETTER    Y\n    #define Y0_NUMBER    0\n\n    //Pxn: Y1\n    #define Y1_BITMASK   _BV(PY1)\n    #define Y1_LETTER    Y\n    #define Y1_NUMBER    1\n\n    //Pxn: Y2\n    #define Y2_BITMASK   _BV(PY2)\n    #define Y2_LETTER    Y\n    #define Y2_NUMBER    2\n\n    //Pxn: Y3\n    #define Y3_BITMASK   _BV(PY3)\n    #define Y3_LETTER    Y\n    #define Y3_NUMBER    3\n\n    //Pxn: Y4\n    #define Y4_BITMASK   _BV(PY4)\n    #define Y4_LETTER    Y\n    #define Y4_NUMBER    4\n\n    //Pxn: Y5\n    #define Y5_BITMASK   _BV(PY5)\n    #define Y5_LETTER    Y\n    #define Y5_NUMBER    5\n\n    //Pxn: Y6\n    #define Y6_BITMASK   _BV(PY6)\n    #define Y6_LETTER    Y\n    #define Y6_NUMBER    6\n\n    //Pxn: Y7\n    #define Y7_BITMASK   _BV(PY7)\n    #define Y7_LETTER    Y\n    #define Y7_NUMBER    7\n\n    //Pxn: Y8\n    #define Y8_BITMASK   _BV(PY8)\n    #define Y8_LETTER    Y\n    #define Y8_NUMBER    8\n\n    //Pxn: Y9\n    #define Y9_BITMASK   _BV(PY9)\n    #define Y9_LETTER    Y\n    #define Y9_NUMBER    9\n\n    //Pxn: Y10\n    #define Y10_BITMASK   _BV(PY10)\n    #define Y10_LETTER    Y\n    #define Y10_NUMBER    10\n\n    //Pxn: Y12\n    #define Y12_BITMASK   _BV(PY12)\n    #define Y12_LETTER    Y\n    #define Y12_NUMBER    12\n\n    //Pxn: Y13\n    #define Y13_BITMASK   _BV(PY13)\n    #define Y13_LETTER    Y\n    #define Y13_NUMBER    13\n\n    //Pxn: Y14\n    #define Y14_BITMASK   _BV(PY14)\n    #define Y14_LETTER    Y\n    #define Y14_NUMBER    14\n\n    //Pxn: Y15\n    #define Y15_BITMASK   _BV(PY15)\n    #define Y15_LETTER    Y\n    #define Y15_NUMBER    15\n\n    //Pxn: Y16\n    #define Y16_BITMASK   _BV(PY16)\n    #define Y16_LETTER    Y\n    #define Y16_NUMBER    16\n\n\n//## Pin Letter:Z\n\n    //Pxn: Z0\n    #define Z0_BITMASK   _BV(PZ0)\n    #define Z0_LETTER    Z\n    #define Z0_NUMBER    0\n\n    //Pxn: Z1\n    #define Z1_BITMASK   _BV(PZ1)\n    #define Z1_LETTER    Z\n    #define Z1_NUMBER    1\n\n    //Pxn: Z2\n    #define Z2_BITMASK   _BV(PZ2)\n    #define Z2_LETTER    Z\n    #define Z2_NUMBER    2\n\n    //Pxn: Z3\n    #define Z3_BITMASK   _BV(PZ3)\n    #define Z3_LETTER    Z\n    #define Z3_NUMBER    3\n\n    //Pxn: Z4\n    #define Z4_BITMASK   _BV(PZ4)\n    #define Z4_LETTER    Z\n    #define Z4_NUMBER    4\n\n    //Pxn: Z5\n    #define Z5_BITMASK   _BV(PZ5)\n    #define Z5_LETTER    Z\n    #define Z5_NUMBER    5\n\n    //Pxn: Z6\n    #define Z6_BITMASK   _BV(PZ6)\n    #define Z6_LETTER    Z\n    #define Z6_NUMBER    6\n\n    //Pxn: Z7\n    #define Z7_BITMASK   _BV(PZ7)\n    #define Z7_LETTER    Z\n    #define Z7_NUMBER    7\n\n    //Pxn: Z8\n    #define Z8_BITMASK   _BV(PZ8)\n    #define Z8_LETTER    Z\n    #define Z8_NUMBER    8\n\n    //Pxn: Z9\n    #define Z9_BITMASK   _BV(PZ9)\n    #define Z9_LETTER    Z\n    #define Z9_NUMBER    9\n\n    //Pxn: Z10\n    #define Z10_BITMASK   _BV(PZ10)\n    #define Z10_LETTER    Z\n    #define Z10_NUMBER    10\n\n    //Pxn: Z12\n    #define Z12_BITMASK   _BV(PZ12)\n    #define Z12_LETTER    Z\n    #define Z12_NUMBER    12\n\n    //Pxn: Z13\n    #define Z13_BITMASK   _BV(PZ13)\n    #define Z13_LETTER    Z\n    #define Z13_NUMBER    13\n\n    //Pxn: Z14\n    #define Z14_BITMASK   _BV(PZ14)\n    #define Z14_LETTER    Z\n    #define Z14_NUMBER    14\n\n    //Pxn: Z15\n    #define Z15_BITMASK   _BV(PZ15)\n    #define Z15_LETTER    Z\n    #define Z15_NUMBER    15\n\n    //Pxn: Z16\n    #define Z16_BITMASK   _BV(PZ16)\n    #define Z16_LETTER    Z\n    #define Z16_NUMBER    16\n\n\n\n\n// ~~~~~~~~~ EXAMPLE ~~~~~~~~~~~\n/*\n\n\n// Example blink code for Arduino UNO 16MHz (atmega328p)\n#define F_CPU 16000000UL // For delay.h to function\n#include &lt;avr/io.h&gt; // PIN, DDR, PORT defs\n#include &lt;util/delay.h&gt; //_delay_ms()\n#include &quot;./AVRAugment_io.h&quot;\n##define LED13 B5 // Only need to change this to swap pins\n#define DDR_13\tSET_REG( DDR, LED13, 0xFF ) //IN=0x00, OUT=0xFF\n#define ON_13\tSET_REG( PORT, LED13, 0xFF ) //LOW=0x00, HIGH=0xFF\n#define OFF_13\tSET_REG( PORT, LED13, 0x00 ) //LOW=0x00, HIGH=0xFF\nint main(void)\n{\n\tDDR_13;\n\tON_13;\n\twhile(1)\n\t{\n\t\t_delay_ms(2000);\n\t\tOFF_13;\n\t\t_delay_ms(2000);\n\t\tON_13;\n\t}\n}\n\n\n*/\n</code></pre>\n",
      "date_published": "2015-07-11T12:18:00Z"
    },
    {
      "id": "/blog/2015/07/05/understanding-more-about-avr-programming/",
      "url": "/blog/2015/07/05/understanding-more-about-avr-programming/",
      "title": "Understanding More About AVR Programming",
      "content_html":"<p>This is just a note for me to recall on how or what really happens in coding an AVR program:</p>\n<h1>ATMEL STUDIO 6 Observation</h1>\n<pre><code>\nx= register letter (e.g. DDRA DDRB etc... )\n\nDDRx :~ Data Direction Register (read/write)\n    : Defines if pin is output=1 or input=0\n\nPORTx :~ Pin Output Mode Register (read/write)\n    : If input then\n       - pullup=1 floating=0\n    : If output then\n       - high=1 low=0\n\nPINx :~ Pin INput register (read only)\n    : sense @ pin: 1=highIn 0=lowIn\n\n</code></pre>\n<p>How are port registers location defined? e.g. What does <code>PORTD</code> refer to?</p>\n<p>In atmel studio 6 in this location:</p>\n<p><code>C:\\Program Files (x86)\\Atmel\\Atmel Toolchain\\AVR Assembler\\Native\\2.1.1175\\avrassembler\\include</code></p>\n<p>You have an entry in file <code>m328def.inc</code> like:</p>\n<pre class=\"language-C\"><code class=\"language-C\">\n...\n.equ\tPORTD\t= 0x0b\n.equ\tDDRD\t= 0x0a\n.equ\tPIND\t= 0x09\n.equ\tPORTC\t= 0x08\n.equ\tDDRC\t= 0x07\n.equ\tPINC\t= 0x06\n.equ\tPORTB\t= 0x05\n.equ\tDDRB\t= 0x04\n.equ\tPINB\t= 0x03\n...\n</code></pre>\n<p>Which defines the IO register pointers in AVR memory.</p>\n<hr />\n<h1>What the hell is <code>.equ</code> ?</h1>\n<p>ALSO: http://www.atmel.com/webdoc/avrassembler/avrassembler.wb_directives.html</p>\n<h2>Assembler Directives</h2>\n<p>All assembler directives have names that begin with a period (`.'). The rest of the name is letters, usually in lower case.</p>\n<h3>.equ symbol = expression</h3>\n<p>The EQU directive assigns a value to a label. This label can then be used in later expressions. A label assigned to a value by the EQU directive is a constant and can not be changed or redefined.</p>\n<p>Very similar to #define, but can only be defined once.</p>\n<p>Seems to be similar to : http://tigcc.ticalc.org/doc/gnuasm.html#SEC86</p>\n<p>But I think the AVR assembler is a modified version of GCC to accept <code>.equ symbol = expression </code> instead/inaddition? to <code>.equ symbol, expression</code> (Maybe someone can clarify this?)</p>\n<hr />\n<p>API :~ application programming interfaces define interfaces between program</p>\n<p>ABI :~ application binary interface (ABI) is the interface between two program modules</p>\n<hr />\n<h2>included in avr/io.h ?</h2>\n<p>Btw Whats in ' #include &lt;avr/io.h&gt; '  ?\nAns: The compiler and the IDE will include in this location, the officially atmel recognized definition e.g.&quot;avr/iom328p.h - definitions for ATmega328P&quot;</p>\n<pre class=\"language-c\"><code class=\"language-c\"><span class=\"token comment\">/* $Id: iom328p.h 2444 2014-08-11 22:10:47Z joerg_wunsch $ */</span>\n\n<span class=\"token comment\">/* avr/iom328p.h - definitions for ATmega328P. */</span>\n\n<span class=\"token comment\">/* This file should only be included from &lt;avr/io.h>, never directly. */</span>\n\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">ifndef</span> <span class=\"token expression\">_AVR_IO_H_</span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span>  <span class=\"token directive keyword\">error</span> <span class=\"token string\">\"Include &lt;avr/io.h> instead of this file.\"</span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">endif</span></span>\n\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">ifndef</span> <span class=\"token expression\">_AVR_IOXXX_H_</span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span>  <span class=\"token directive keyword\">define</span> <span class=\"token macro-name\">_AVR_IOXXX_H_</span> <span class=\"token string\">\"iom328p.h\"</span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">else</span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span>  <span class=\"token directive keyword\">error</span> <span class=\"token string\">\"Attempt to include more than one &lt;avr/ioXXX.h> file.\"</span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">endif</span></span>\n\n\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">ifndef</span> <span class=\"token expression\">_AVR_IOM328P_H_</span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name\">_AVR_IOM328P_H_</span> <span class=\"token expression\"><span class=\"token number\">1</span></span></span>\n\n<span class=\"token comment\">/* Registers and associated bit numbers */</span>\n\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name\">PINB</span> <span class=\"token expression\"><span class=\"token function\">_SFR_IO8</span><span class=\"token punctuation\">(</span><span class=\"token number\">0x03</span><span class=\"token punctuation\">)</span></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name\">PINB0</span> <span class=\"token expression\"><span class=\"token number\">0</span></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name\">PINB1</span> <span class=\"token expression\"><span class=\"token number\">1</span></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name\">PINB2</span> <span class=\"token expression\"><span class=\"token number\">2</span></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name\">PINB3</span> <span class=\"token expression\"><span class=\"token number\">3</span></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name\">PINB4</span> <span class=\"token expression\"><span class=\"token number\">4</span></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name\">PINB5</span> <span class=\"token expression\"><span class=\"token number\">5</span></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name\">PINB6</span> <span class=\"token expression\"><span class=\"token number\">6</span></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name\">PINB7</span> <span class=\"token expression\"><span class=\"token number\">7</span></span></span>\n\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name\">DDRB</span> <span class=\"token expression\"><span class=\"token function\">_SFR_IO8</span><span class=\"token punctuation\">(</span><span class=\"token number\">0x04</span><span class=\"token punctuation\">)</span></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name\">DDB0</span> <span class=\"token expression\"><span class=\"token number\">0</span></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name\">DDB1</span> <span class=\"token expression\"><span class=\"token number\">1</span></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name\">DDB2</span> <span class=\"token expression\"><span class=\"token number\">2</span></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name\">DDB3</span> <span class=\"token expression\"><span class=\"token number\">3</span></span></span>\n\netc<span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span>\n</code></pre>\n<hr />\n<hr />\n<h1>Arduino Observation</h1>\n<p>I see the above is probbly just for AVR Studio with their AVR Assembler.</p>\n<p>For arduino, their source code is a bit different in terms of how it references ports in a chip, using AVR-GCC.</p>\n<p>e.g. You find that in:</p>\n<p><code>C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr\\avr\\include\\avr</code></p>\n<p>They would define a memmory mapped register as:</p>\n<pre><code>\n#ifndef _AVR_ATmega32U6_H_\n#define _AVR_ATmega32U6_H_ 1\n\n\n/* Registers and associated bit numbers. */\n\n#define PINA _SFR_IO8(0x00)\n#define PINA0 0\n#define PINA1 1\n#define PINA2 2\n#define PINA3 3\n#define PINA4 4\n#define PINA5 5\n#define PINA6 6\n#define PINA7 7\n\n#define DDRA _SFR_IO8(0x01)\n#define DDA0 0\n#define DDA1 1\n#define DDA2 2\n#define DDA3 3\n#define DDA4 4\n#define DDA5 5\n#define DDA6 6\n#define DDA7 7\n\n</code></pre>\n<p>using this cryptic _SFR_IO8 function. But actually, it is not a function, it is a directive.</p>\n<p>As shown in</p>\n<h2>http://garretlab.web.fc2.com/en/arduino/inside/avr/sfr_defs.h/_SFR_IO8.html</h2>\n<h3>Abstract</h3>\n<p>The <code>_SFR_IO8()</code> converts the I/O address to the memory address. It is a macro that returns a byte of data at an address of <code>io_addr + __SFR_OFFSET</code>.</p>\n<h3>Source Code</h3>\n<p>The _SFR_IO8() is defined in hardware/tools/avr/avr/include/avr/sfr_defs.h as below.</p>\n<pre><code>#define _SFR_IO8(io_addr) _MMIO_BYTE((io_addr) + __SFR_OFFSET)\n#define __SFR_OFFSET 0x20\nAdding __SFR_OFFSET to io_addr, then calls _MMIO_BYTE().\n</code></pre>\n<h2>Note:</h2>\n<p>The use of <code>io_addr + __SFR_OFFSET</code> makes more sense when you see this link http://www.protostack.com/blog/2010/12/avr-memory-architecture/</p>\n<p>The memmory stucture of AVR is like this</p>\n<pre><code>\n# FLASH (16 Bits wide) (start at 0x000, ends at FLASHEND )\n * Application \n  - Flash section ( Read while Write )\n  - Optional Flash Section (No Read while Write)\n * Optional Bootloader\n\n# Ram (8bit wide)\n 0x0000 : 32 General Purpose Registers\n 0x0020 : 64 I/O Registers ( THIS IS WHAT __SFR_OFFSET refers to ) \n           &lt;---- (AKA THIS IS THE SPECIAL FUNCTION REGISTER!)\n 0x0060 : 160 Extended I/O Registers\n 0x0100 : Internal Ram (Accessable for variables etc...)\n RAMEND : End of internal Ram\n RAMEND+1: External RAM\n 0xFFFF : Max memmory address.\n\n# EEPROM ( 8 bit wide) ( start at 0x000, ends at EEPROMEND )\n\n</code></pre>\n<p>So that should give you an idea, of what exactly is going on... At least for AVR-GCC (and AVR Assembler too)</p>\n<hr />\n<ul>\n<li>\n<p>http://gcc.gnu.org/wiki/avr-gcc</p>\n</li>\n<li>\n<p>http://stackoverflow.com/questions/23457389/avr-assembler-define-vs-equ-is-it-the-same</p>\n</li>\n<li>\n<p>http://www.atmel.com/Images/doc1022.pdf - AVR Assembler User Guide\n(By Atmel)</p>\n</li>\n<li>\n<p>http://www.atmel.com/Images/avr_3_04.pdf</p>\n</li>\n</ul>\n",
      "date_published": "2015-07-05T00:51:00Z"
    },
    {
      "id": "/blog/2015/02/28/openpgp-card-v2.0-factory-reset/",
      "url": "/blog/2015/02/28/openpgp-card-v2.0-factory-reset/",
      "title": "OpenPGP Card V2.0 Factory Reset",
      "content_html":"<p>Had quite a close call with bricking my OpenPGP card which is specifically V2.0 .</p>\n<p>To make it easier for those doing this in windows (mostly for myself). I made a batchfile that types the right commands into gpg to do a full factory reset of your OpenPGP card (Only tested on V2.0 btw, not V2.1 or V1.0), using codes from other sites (however most didn't work, except this one after some corrections).</p>\n<p><a href=\"/projects/privacy/gpg/OpenPGP_V2.0_FactoryReset.zip\">Download here</a></p>\n<h1>./FactResetOpenPGPCard.bat</h1>\n<pre><code>@echo off\ncd ./script\necho Type &quot;I know what I am doing&quot; if you want to reset card: \nset /p word=&quot;passphrase: &quot; %=%\n\nSET TRIGWORD=I know what I am doing\n\nIF &quot;%word%&quot; == &quot;%TRIGWORD%&quot; (gpg-connect-agent &lt; openpgpcard_resetfile.scd) ELSE (echo incorrect passphrase)\n\nPAUSE\n</code></pre>\n<h1>./script/openpgpcard_resetfile.scd</h1>\n<pre><code>/echo PURPOSE: To reset openpgp card (tested on V2.0 cards)\n/echo to use (openpgpcard_resetfile.scd), type: gpg-connect-agent &lt; openpgpcard_resetfile.scd\nscd reset\nscd serialno undefined\nscd apdu 00 A4 04 00 06 D2 76 00 01 24 01\nscd apdu 00 20 00 81 08 40 40 40 40 40 40 40 40\nscd apdu 00 20 00 81 08 40 40 40 40 40 40 40 40\nscd apdu 00 20 00 81 08 40 40 40 40 40 40 40 40\nscd apdu 00 20 00 81 08 40 40 40 40 40 40 40 40\nscd apdu 00 20 00 83 08 40 40 40 40 40 40 40 40\nscd apdu 00 20 00 83 08 40 40 40 40 40 40 40 40\nscd apdu 00 20 00 83 08 40 40 40 40 40 40 40 40\nscd apdu 00 20 00 83 08 40 40 40 40 40 40 40 40\nscd apdu 00 e6 00 00\nscd reset\nscd serialno undefined\nscd apdu 00 A4 04 00 06 D2 76 00 01 24 01\nscd apdu 00 44 00 00\n/echo Card has been reset to factory defaults \n/bye\n</code></pre>\n<h1>What went wrong before?</h1>\n<p>The issue is that many examples out there does not specify version, and the troublesome thing is that what may work on V1.0 may not work in V2.0</p>\n<p>Also even when i got the correct set of codes, you must avoid trailing spaces when copying the apdu codes (Otherwise scd will get confused).</p>\n<p>Once that is solved, it was just a matter of writing a batch file to make sure it works.</p>\n",
      "date_published": "2015-02-28T01:32:00Z"
    },
    {
      "id": "/blog/2015/02/24/gpg_gpa-and-a-openpgp-smartcard/",
      "url": "/blog/2015/02/24/gpg_gpa-and-a-openpgp-smartcard/",
      "title": "gpg+gpa and a openpgp smartcard",
      "content_html":"<p>This is an ongoing log of setting up, installing and then using an open sourced privacy suite.</p>\n<hr />\n<p>Keyserver entries. You can find my latest one under mofosyne in</p>\n<ul>\n<li>http://keys.gnupg.net/pks/lookup?op=vindex&amp;search=mofosyne&amp;fingerprint=on</li>\n</ul>\n<hr />\n<p>The OpenGPG smartcard is not as easy as you think to reinstall: Instruction coming up for openpgp card V2.0 factory reset process.</p>\n<p>I did manage to get it to install, and work. But GPA (GUI for GPG) is really quite unstable, requiring a reset of computer sometimes\nto deal with the card not being read by GPA.</p>\n<hr />\n<p>Now my concern is how to write emails and use it in an easy manner.</p>\n",
      "date_published": "2015-02-24T19:35:00Z"
    },
    {
      "id": "/blog/2015/02/13/6x6-tap-code-experimentation/",
      "url": "/blog/2015/02/13/6x6-tap-code-experimentation/",
      "title": "6x6 tap code experimentation",
      "content_html":"<p>Tap codes has a pretty cool history, you can read more about it in <a href=\"http://en.wikipedia.org/wiki/Tap_code\">the wikipedia entry for tap codes</a>. A minor issue is that the C and K in the 5x5 tap codes are mushed together. What if we extend the table to 6x6. And what if we arrange it in different ways. Here is just some experimentations to that reguards.</p>\n<p>Feel free to use it. Please do let me know how you find it. It's not ment to be a serious form of communication. But it is easy to explain (not sure if any easier to master compared to morse code).</p>\n<hr />\n<h2>Letter Freqency</h2>\n<pre><code>12,000\tE\t\t\t\t| 2,500\tF\n9,000\tT\t\t\t\t| 2,000\tW, Y\n8,000\tA, I, N, O, S\t| 1,700\tG, P\n6,400\tH\t\t\t\t| 1,600\tB\n6,200\tR\t\t\t\t| 1,200\tV\n4,400\tD\t\t\t\t| 800\tK\n4,000\tL\t\t\t\t| 500\tQ\n3,400\tU\t\t\t\t| 400\tJ, X\n3,000\tC, M\t\t\t| 200\tZ\n</code></pre>\n<p>SOURCE: <a href=\"http://www.oxforddictionaries.com/words/what-is-the-frequency-of-the-letters-of-the-alphabet-in-english\">What is the freqency of the letters of the alphabet in english</a></p>\n<hr />\n<p>Tap the number of rows, then tap the number of columns</p>\n<pre><code>\t\n\t Non Standard 6x6 Tap Code ( Arranged by frequency of letters )\n\t\n\t   | 1 | 2 | 3 | 4 | 5 | 6 |\n\t---|---|---|---|---|---|---|\n\t 1 | E | A | O | D | F | Z |\n\t 2 | T | N | R | M | B | X | \n\t 3 | I | H | C | P | J | 3 |\n\t 4 | S | U | G | Q | 2 | 6 | \n\t 5 | L | Y | K | 1 | 5 | 8 |\n\t 6 | W | V | 0 | 4 | 7 | 9 |\n\n\n</code></pre>\n<pre><code>\n\t Non Standard 6x6 Tap Code ( Arranged by Alphanumerical Order )\n\n\t   | 1 | 2 | 3 | 4 | 5 | 6 |\n\t---|---|---|---|---|---|---|\n\t 1 | A | B | C | D | E | F |  \n\t 2 | G | H | I | J | K | L |\n\t 3 | M | N | O | P | Q | R |\n\t 4 | S | T | U | V | W | X |\n\t 5 | Y | Z | 0 | 1 | 2 | 3 | \n\t 6 | 4 | 5 | 6 | 7 | 8 | 9 |\n\t\n\n</code></pre>\n<pre><code>\n\t Non Standard 6x6 Tap Code EXTENDED PROSIGNS ( Arranged by Alphanumerical Order )\n\n\t   | 1 | 2 | 3 | 4 | 5 | 6 |\n\t---|---|---|---|---|---|---|\n\t 1 | A | B | C | D | E | F |  \n\t 2 | G | H | I | J | K | L |\n\t 3 | M | N | O | P | Q | R |\n\t 4 | S | T | U | V | W | X |\n\t 5 | Y | Z | 0 | 1 | 2 | 3 | \n\t 6 | 4 | 5 | 6 | 7 | 8 | 9 |\n\t 7 |EOW|ERR|ITT|SS |UND|WAT|\n\t \n\t EOW : END OF WORK\n\t ERR : ERROR\n\t ITT : Invitation To Transmit\n\t SS  : Starting signal\n\t UND : Understood\n\t WAT : Wait\n\n</code></pre>\n<pre><code>\n\t Non Standard 6x6 Tap Code EXTENDED PUNCTUATIONS ( Arranged by Alphanumerical Order )\n\n\t   | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |\n\t---|---|---|---|---|---|---|---|---|---|\n\t 1 | A | B | C | D | E | F | . | ( | + |\n\t 2 | G | H | I | J | K | L | , | ) | - |\n\t 3 | M | N | O | P | Q | R | ? | &amp; | _ |\n\t 4 | S | T | U | V | W | X | ' | : | &quot; |\n\t 5 | Y | Z | 0 | 1 | 2 | 3 | ! | ; | $ |\n\t 6 | 4 | 5 | 6 | 7 | 8 | 9 | / | = | @ |\n\t\n\n</code></pre>\n<pre><code>\n\t Non Standard 6x6 Tap Code EXTENDED PUNCTUATIONS &amp; PROSIGNS\n\t ( Arranged by Alphanumerical Order )\n\n\t   | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |\n\t---|---|---|---|---|---|---|---|---|---|\n\t 1 | A | B | C | D | E | F | . | ( | + |\n\t 2 | G | H | I | J | K | L | , | ) | - |\n\t 3 | M | N | O | P | Q | R | ? | &amp; | _ |\n\t 4 | S | T | U | V | W | X | ' | : | &quot; |\n\t 5 | Y | Z | 0 | 1 | 2 | 3 | ! | ; | $ |\n\t 6 | 4 | 5 | 6 | 7 | 8 | 9 | / | = | @ |\n\t 7 |EOW|ERR|ITT|SS |UND|WAT|\n\t \n\t EOW : END OF WORK\n\t ERR : ERROR\n\t ITT : Invitation To Transmit\n\t SS  : Starting signal\n\t UND : Understood\n\t WAT : Wait\t\n\n</code></pre>\n<hr />\n<p>In general however, from what I read online, it's still easier to learn morse code. (But this is easier to explain to newbies, with a reference sheet).</p>\n",
      "date_published": "2015-02-13T21:13:00Z"
    },
    {
      "id": "/blog/2015/02/12/making-a-smartcard-reader-more-portable/",
      "url": "/blog/2015/02/12/making-a-smartcard-reader-more-portable/",
      "title": "making a smartcard reader more portable",
      "content_html":"<p>Got a Smart Card Reader (Gemalto IDBridge CT30) for really cheap, but is frankly just too large. Would be nice to shrink it.</p>\n<p>It has usb and serial capability. But I have no idea what's the pinout for the serial line version.</p>\n<pre class=\"language-ascii-diagram\"><code class=\"language-ascii-diagram\">\nPINOUT OF THE GEMALTO ID\n\t\n\tUSB CABLE to smartcard reader: \n\t[ 1:NC | 2:USB_D+_GREEN | 3:USB_D-_WHITE | 4:5V_VCC \n\t| 5:NC  | 6:NC           | 7:NC           | 8:GND    ]\n\t\n\t __   ___________________   __\n\t|  |_| [1|2|3|4|5|6|7|8] |_|  |\n\t|                             |\n\t|    ([ 4.0Mhz Crystal ])     |\n\t|                             |\n\t|   | | | | | | | | | | | |   |\n\t|  |-----------------------|  |\n\t|  |  [ST] GEMPLUS         |  |\n\t|  |  GEMTWIN200G          |  |\n\t|  |  SAZ1 9907JVP         |  |\n\t|  |       MYS 99644       |  |\n\t|  |-----------------------|  |\n\t|   | | | | | | | | | | | |   |\n\t|                             |\n\t|                             |\n\t|                             |\n\t|                             |\n\t|                             |\n\t|-----------------------------|\n\t\n\t\n\tC1:VCC C2:RST C3:CLK C4:NC\n\tC5:NC C6:IO C7:NC C8:VSS/GND\n\t __   ___________________   __\n\t|  |_|                   |_|  |\n\t|                             |\n\t|                    |C D|    |\n\t|                    |A E|    |\n\t| |               |  |R T|    |\n\t| |               |  |D E|    |\n\t| |               |  |  C|    |\n\t| |               |  |  T|    |\n\t| [C1][C2][C3][C4]|           |\n\t|                             |\n\t| [C8][C7][C6][C5]|           |\n\t| |               |           |\n\t| |               |           |\n\t| |               |           |\n\t| |               |           |\n\t| |               |           |\n\t| |               |           |\n\t|                             |\n\t|-----------------------------|\n</code></pre>\n<p>Since I will be using the ID-000 smartcard form factor, I will need to short circuit the card detect function. Which doesn't matter since I will always be plugging in a single smartcard</p>\n",
      "date_published": "2015-02-12T20:11:00Z"
    },
    {
      "id": "/blog/2015/01/14/css-style-for-ascii-art/",
      "url": "/blog/2015/01/14/css-style-for-ascii-art/",
      "title": "css style for ascii-art",
      "content_html":"<p>In order to make ascii art nicer to look at, I was experimenting with some CSS. While I thought to make a dedicated generator in javascript, I luckly found that there is an easier way to do so in CSS. Originally I did the css styling for <a href=\"http://www.reddit.com/r/textfiles/comments/2s9ybk/random_ascii_art/\">reddit as can be seen in this post</a>. Since it works well there, I decided to try it out for my site.</p>\n<pre class=\"language-ascii-art\"><code class=\"language-ascii-art\"> __  __  _____  ____  _____  ___  _  _  _  _  ____ \n(  \\/  )(  _  )( ___)(  _  )/ __)( \\/ )( \\( )( ___)\n )    (  )(_)(  )__)  )(_)( \\__ \\ \\  /  )  (  )__) \n(_/\\/\\_)(_____)(__)  (_____)(___/ (__) (_)\\_)(____)</code></pre>\n<p>Above banner ascii text &quot;mofosyne&quot; was generated from <a href=\"http://www.network-science.de/ascii/\">this banner generator</a></p>\n<p>To get this style, just read on.</p>\n<!--more-->\n<p>While it looks very nice for many ascii-arts, it really does mess up any textual data within the art, and make it much harder to read. So best practice is to just restrict this style to ascii-arts only, and to exclude any &quot;ascii-diagrams&quot;.</p>\n<p>Here is an example of an ascii-diagrams that is messed up when this style is applied.</p>\n<pre class=\"language-ascii-art\"><code class=\"language-ascii-art\">    _________________________________________________________________\n\t|\t\t\t\t \t__________\t\t\t\t\t\t\t\t\t|\n\t|\t\t\t\t\t|\t\t |\t\t\t\t\t\t\t\t\t|\n\t|\t|\t\t\t\t| EEPROM |\t\t\t(RX)\t\t(VCC)\t\t|\n\t|\t|___\t\t\t|________|\t\t\t\t\t\t\t\t\t|\n\t|\t____|\t|\t_________________\t\t(GPIO0)\t\t(RESET)\t\t|\n\t|\t|___\t|\t|\t\t\t\t|\t\t\t\t\t\t\t\t|\n\t|\t____|\t|\t|\tESP8266\t\t|\t\t(GPIO2)\t\t(CH_PD)\t\t|\n\t|\t|___\t|\t| Wifi+ARM_MCU  |\t\t\t\t\t\t\t\t|\n\t|\t____|\t|\t|_______________|\t\t(GND)\t\t(TX)\t\t|\n\t|\t|_______|__\t\t\t\t\t\t\t\t\t\t\t\t\t|\n\t|_______________________________________________________________|\n\t\n\tRX\t\t:\tUART Receive Pin (Connects to TX of other device)\n\tVCC\t\t:\t3.3V Upper Power rail (Input power)\n\tGPIO0\t:\tGeneral Purpose Input Output (0)\n\tRESET\t:\tReset Device\n\tCH_P2\t:\tGeneral Purpose Input Output (2)\n\tCH_PD\t:\tChip Enable Pin (pull high)\n\tGND\t\t:\t0V Power Ground\n\tTX\t\t:\tUART Transmit Pin  (Connects to RX of other device)</code></pre>\n<h2>Installing in Jekyll</h2>\n<p>Here is the CSS style to place in your css file.</p>\n<pre><code>/*\nDiagram and ASCII ART styling for Jekyll (and other markdown parser that appends a .language- prefix)\n*/\n\n.language-ascii-art {\n display: inline-block; \n font-family: &quot;Lucida Console&quot;, Monaco, monospace;\n letter-spacing: -0.2em;\n line-height: 0.8em;\n text-shadow: 0 0 5px rgba(100,100,100,0.5);\n}\n\n.language-ascii-noshadows {\n display: inline-block; \n font-family: &quot;Lucida Console&quot;, Monaco, monospace;\n letter-spacing: -0.2em;\n line-height: 0.8em;\n}\n\n</code></pre>\n<p>So now when you type in a fenced block that specifies &quot;ascii-art&quot; as the syntax highlighting option, it will be styled. This code will have &quot;.language-ascii-art&quot; as it's class name. And thus will be styled as an ascii-art.</p>\n<p><code>ascii-art \t\t\t /\\_/\\ \t\t____/ o o \\ \t  /~____  =-= / \t (______)__m_m) \t</code></p>\n<p><code>ascii-art-noshadows \t\t\t /\\_/\\ \t\t____/ o o \\ \t  /~____  =-= / \t (______)__m_m) \t</code></p>\n<p>Will turn into</p>\n<pre class=\"language-ascii-art\"><code class=\"language-ascii-art\">         /\\_/\\\n    ____/ o o \\\n  /~____  =-= /\n (______)__m_m)</code></pre>\n<p>and if you don't like drop shadows (as requested by tom4000 from hackernews ):</p>\n<pre class=\"language-ascii-art-noshadows\"><code class=\"language-ascii-art-noshadows\">         /\\_/\\\n    ____/ o o \\\n  /~____  =-= /\n (______)__m_m)</code></pre>\n<p>This ascii-art CSS styling snippet is public domain. Just use it how you wish.</p>\n<hr />\n<h2>Reddit Style</h2>\n<p>Need to use one for subreddit? Use this style:</p>\n<pre><code>/*\n    CSS for nicer looking ascii art in reddit\n    Demo: http://www.reddit.com/r/textfiles/comments/2s9ybk/random_ascii_art/\n*/\ncode {\n display:inline-block; \n font-family:&quot;Lucida Console&quot;, Monaco, monospace ;\n letter-spacing: -0.2em;\n line-height: 0.8em;\n text-shadow: 0 0 5px rgba(100,100,100,0.5);\n}\n</code></pre>\n<p><a href=\"http://www.reddit.com/r/textfiles/comments/2s9ybk/random_ascii_art/\">Demo</a></p>\n<p>This ascii-art CSS styling snippet is public domain. Just use it how you wish.</p>\n<hr />\n<h2>Bit of experiment (blurred, no text)</h2>\n<pre><code>.language-ascii-art-blur {\n color: transparent; /*hide the text this time*/\n display: inline-block; \n font-family: &quot;Lucida Console&quot;, Monaco, monospace;\n letter-spacing: -0.3em;\n line-height: 0.6em;\n text-shadow: 0 0 4px #000000;\n}\n</code></pre>\n<p>Thus:</p>\n<pre class=\"language-ascii-art-blur\"><code class=\"language-ascii-art-blur\">i`it)v|[[[[(//s+)`(-\\\\/JJgbdd@@@@@@@dmKK(c!(/-[2=/cct/!-v\\!_L\\)|\n]-!/(!-)\\L\\)v|c5(!,!Ldd@@@@@@@@@@@@@@@@@@@dK/]!c\\\\\\v|i\\/cT\\v((c-\n]!`/v\\//(-|t\\VvcL!m@@@@@M@@@@@@@@@@@@@@@@@@@@bLt\\\\|)c/2-vv)/it\\.\n--/-,\\,\\v\\,|)/v/m@@@@@@K@@@@@@@@@@@@@@@@@@@@@@@bK!v!-( )-!.[/cT\n//.\\--'--|-/c(e@@@@@@@DD@@@@@@@@@@@@@@@@@@@@@@@@@@s\\\\\\\\-||/v!c\\.\n-,-|\\`||\\-\\/id@@@@@@@@N@@@@@@@@@@@@@@@@@@@@@@@@@@@@b.),`-,-/c-`i\n!,\\!-!-!'!-!d@@@@@@@P[+~**AAA@@@@@@@@@@@@@@@@@@@@@@@b/./`c-/.\\7-\n--'.-- -/,id@@@*P!`          \\'Z8@@@@@@@@@@@@@@@@@@@@@i.\\\\'.\\.c\n',`,`\\'-,-J@@5`-           -- `-iYA@@@@@@@@@@b@@@@@@@@@_\\-|-\\c-\n'. -.,`/.G@@K- `               - )7KM@@@@@@@@@@@@@@@@@@@c-----/\n- `-  --i@@Ai                    -!ZZ@@@@@@@@@@@@@@@@@@@b! \\`|-`\n `-,'- G@@@[,                    '.D8K@@@@@@@@@@@@@@@@@@@[/-,-/.\n-` .-/v@@@A)                      -)ZdMd@@@@@@@@@@@@@@@@@@\\' _\\\n- ` ,iVJ@@@!                     '-!(K5K@@@@@@@@@@@@@@@@@@[(/s[.\n  - i\\G@@@Z-                    ' ! -i55ZZ@@@@@@@@@@@@@@@@@)(4)`\n , -|b@@@@!\\                     '  ` |-tYG@@@@@@@@@@@@@@@@XNYZ-\n   tt@@@@A-,                        '  `)(d@@@@@@@@@@@@@@@@D)8A[\n   )8@@@@@\\                         ,-'-/Kd@@@@@@@@@@@@@@@@@KD@[\n  ]]Z@@@@d|-              ,ii.c,, -.icLZKK@@@@@@8@K@@@@@@@@@(@8[\n  KN8@@@@@( .i!vGG_      J4Kb8ZKb@bbK@d@88@@@@@@@b@@@@@@@@@@dK@-\n )/8K@@@K@b@dP~~~T4(    Jd@@7`___s@M@@@@MM8d@@@d@@@@@@@@@@@@LM8[\n\\!48@K@@@@8@@d*@@@bVi   bAKLY~~@@@@@@*ff/\\NM8@@@@@@@@@@@@@@@db@[\n,\\\\Kb@@@d@.~t` !*~!`.  -MA)    '~'.).` `,'K@@@@@@@@@@@@@@@@@AKb[\n,`8M@@@@@@ -`,,gvZ``    A//-  ..c\\+\\`    i]d@@@@@@M@@@@@@@@@@@8[\ni\\@8@K@@@D              \\!'             !iZ8@@@8A@@@@@8d@b@@@8M[\ne8d5@@@@@@             '!-             '-)8@@@@@@@@@@@@@@@@@@M8i\n8dZ8@M@@@@-             v  ,          ,\\tK@@@@@@@@@@@@A@@@@@@Z2|\n@b@AK@@@b@[              //           cctbA@@@AK@@d@@d@@@K@@@bmi\n@@8@M@8@@@P-            -=/.         /iD8d@@@@@@@@@@@@@@A@@@d@@[\n@8@@@MA@@@@\\-      .   _)g2i        -((dKK@@@@@d@@@@d@@K@@@@@@K[\n@@@bAK@@K@@)i     'c,,Kb@@bK       )X)Kb@M@@d@@@Mb@@A@d@@@@@@8@[\n@K@b@@@@A@AA/i-     ~M@@@@Mc    .,\\c=)D8d@@b@@@d@@@@@@@@@@8d@@A[\n@@@@Mb@@@@@@('c\\`     PPK((,i]v|-\\-v)8XNAdMK@@@@@@@b@@MK@A@@@@@[\n@@8@@MK@d@A@L!--c)s_, ,(ZsbLb@\\`- .-N]/KM@@@@@@@d@@@A@@@@@@@@d@[\n@@Kb@@@K@b@@@/-  !''~~Vff*N5f -` -,\\))KK@@@@@@@MK@@d@@@M8d@b@@@[\n@b@@@KAK@@@@@@2--    ,,_JJ/i)/- |/v)NK@8d@@@@@@@@@@8@@@@@@@@M@K[\n@@8d@K@@@b@@@@@d!,   'VV\\)\\\\)\\7(-)4Jb@8@A@@@K@d@@@@@@@8@@@@@@@@[\nM@@@@8@@K@Kb@@@d@v.       `-\\\\/v)88b@M@A@K@@M@@@A@@M@8@@A@d@8@M[\nZb@d@M@K@@@@@@@@@@m       -)!/stbb@b@@A@b@@@@@Kb@@@@@@@b@@@K@@@[\nK@@d@@@@@d@M@8@@@@@Ks   ,-/vJD@@8d@K@@@@@@8@@@@@@@@@@MK@@@b@@M@[\ntN@b@@d@d@M@@@@@@@@@@LL4JKd@A@@d@@K@@@@MK@@@@8@@@@@@@@@@@b@@@@@[\n)NM@8b@@A@@@A@@@@@@@@@@@@@@A@@A@@8@@K@d@@@@M@@K@@K@A@@@8@@M@@@@[\n(tMM@@@d@@M8@@@@A@@@@A@@@A@@@@@@@@@A@@@@8b@@8d@@@@@@@@@@@@@@@@M[\ntNZ@@K@@@d@@@@A@@@@@8@@@/4N@@8@b@@d@@M@8@MK@M8@K@@@@@@d@@@@@@@@[\nM/KA8@@@MA@@@M@@@@@@@@@@[|t*Z@N@@@@8@@M8ZAZZ@M@@@A@d@@@@@K@@@d@[\nbYJ4M@@@@@@A@@@@@@@@@@@@D.\\'(YKKZD@8dK@5A84YZ@dM@@@@@@@@@@@@d@@[\nK5dM8@8d@d@@@@@@@@8@@@@@@..-!/))ZK5AK4)AY(/XY/Z@@@A@@@d@@@M@@@@[\nY8dNA@@AK@@d@@@b@@@@@@@@@L,-,\\!]]\\X(5)Z/7c\\\\t5/K@@@@@@@@b@@@@@@[\n8M8@@@A@@@A@@8@@@@@@@@@KDLt! !,-|t'(-\\\\!,\\/,\\!ZJG@@@d@Md@@@G@@@[</code></pre>\n<p>source: http://www.chris.com/ascii/index.php?art=art%20and%20design/mona%20lisa</p>\n<hr />\n<h2>Another experiment ( CRT glow )</h2>\n<p>This preserves the look of ASCII text. But with the additional retro benifit of replicating the &quot;bleed-in&quot; effect that larger characters has (which ASCII artist in the past probbly exploited in CRT screens to give the image a &quot;filled in&quot; look).</p>\n<p>For Jekyll (using &quot;ascii-art-glow&quot;)</p>\n<pre><code>.language-ascii-art-glow {\n font-family: monospace;\n text-shadow: 0 0 20px , 0 0 40px, 0 0 80px , 0 0 100px;\n}\n</code></pre>\n<p>For subreddit in reddit:</p>\n<pre><code>code {\n font-family: monospace;\n text-shadow: 0 0 20px , 0 0 40px, 0 0 80px , 0 0 100px;\n}\n\n</code></pre>\n<img src=\"data:image/jpg;base64,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stxLMFEjEhelRUVXKlrYtQitUgoooqigooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAqRKjp60mJl+NZ2WNcsQ33Ruz/wDqqbyp8NlXwPvfzqCKZkSPbGcrnBPOc1KbmQrIPLA3Ek/L06VytSucUlK+hJ5VxuA2vuIz19/8aZ5cwVScqu4DcTgA5/8A10pu5fNDeUM44G33z/8AWqtLdM0PlEKB6gD3/wAaSjJijGbHuzKWHnKcKDw3X2+vP86gM7f3244HNQM9N3Gt1A6Y0+5M0zEEbjg84zUTNmm5oq0rGijYKKSiqKCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAVTtYHAODnB6VL9o+Zm8mHkYxs4FFFJpMTSe4ef8qjyovl77evGOaRp9yyDyohvJOQv3enT06UUUcqFyoioooplBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFKDRRQBMLmQBRvPy9Pal+0yEMC5+br70UVPKiOSPYX7XLuDeYdw7/jn+dQls0UUKKWw1FLYbSUUVRQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAf/Z\" alt=\"An example of a CRT glowing effect\" />\n<p><a href=\"http://www.reddit.com/r/ASCII_Archive/comments/2mg4o2/revolver/\">ASCII image source</a></p>\n<ul>\n<li>\n<p>Pros: More faithful to the original effect in CRT monitors that artist in the old days exploited. Normal non art text embedded within the ASCII-art is readable.</p>\n</li>\n<li>\n<p>Cons: Is not as pretty as the previous suggestion in <a href=\"http://www.reddit.com/r/ASCII_Archive/comments/2sa104/consider_installing_this_css_style_for_rendering/\">here</a> . Also it requires a dark background on light text to work best.</p>\n</li>\n</ul>\n<pre class=\"language-ascii-art-glow\"><code class=\"language-ascii-art-glow\">╔═ comhack@Cerberus 10:49 PM \n╚═══ ~-> ssh -p xxxx comhack@xx.xxx.xxx.xxx\n\n^[[H^[[2J\n   _____                .__      .____    .__\n  /  _  \\_______   ____ |  |__   |    |   |__| ____  __ _____  ___\n /  /_\\  \\_  __ \\_/ ___\\|  |  \\  |    |   |  |/    \\|  |  \\  \\/  /\n/    |    \\  | \\/\\  \\___|   Y  \\ |    |___|  |   |  \\  |  />    <\n\\____|__  /__|    \\___  >___|  / |_______ \\__|___|  /____//__/\\_ \\\n        \\/            \\/     \\/          \\/       \\/            \\/\n           \n\nOS: Archlinux \\s   Kernel: \\r   Processor: \\m   Terminal: \\l   Users: \\u\n\ncomhack@xx.xxx.xxx.xxx's password: </code></pre>\n<p><a href=\"https://bbs.archlinux.org/viewtopic.php?pid=1235434\">ASCII image source</a></p>\n<p>For more information about how artist and game makers exploted the glow effect of CRT, an interesting article here can be read:</p>\n<p><a href=\"http://ascii.textfiles.com/archives/3786\">What a Wonder is a Terrible Monitor — December 4, 2012\n( http://ascii.textfiles.com/archives/3786 ) </a></p>\n<hr />\n<h2>Ascii art tests</h2>\n<pre class=\"language-ascii-art\"><code class=\"language-ascii-art\">.--.     /\\                ____\n'--'    /__\\    (^._.^)~ <(o.o )>\n\n.g@8g.  db\n'Y8@P' d88b\n\n:$#$: \"4b. ':.\n:$#$:   \"4b. ':.</code></pre>\n",
      "date_published": "2015-01-14T01:07:00Z"
    },
    {
      "id": "/blog/2015/01/10/node.js-notes/",
      "url": "/blog/2015/01/10/node.js-notes/",
      "title": "node.js notes",
      "content_html":"<p>To install node.js go to http://nodejs.org/ and install the latest copy of node.js .</p>\n<h2>Note: For windows</h2>\n<pre><code>C:\\Windows\\System32&gt;npm install\nError: ENOENT, stat 'C:\\Users\\&lt;Your User Account Name&gt;\\AppData\\Roaming\\npm'\nError: EPERM, open 'C:\\Windows\\System32\\npm-debug.log'\n</code></pre>\n<p>If you get this error, it means that this folder <code>C:\\Users\\&lt;Your User Account Name&gt;\\AppData\\Roaming\\npm</code> just plain doesn't exist and you should feel bad. Actually, just create that folder, and you will be good to go.</p>\n<p>=====================</p>\n<h1>Using the <strong>npm</strong> Package Manager</h1>\n<h2>Initializing / Starting a node.js project folder</h2>\n<p>To make life with node.js easier, you should really spend some time to understand how to use a package manager. Below is some commands you should note, especially when starting a project.</p>\n<p><strong>On start of a node.js project. Type <code>npm init</code> on the root of your project folder.  .</strong></p>\n<p><strong>So how do you start a node.js project folder?</strong></p>\n<p>On the root folder of a node.js project you should type <code>npm init</code>.</p>\n<p><code>npm init</code>\n:\t It will ask you a set of questions, e.g. versionm description, entry point (like main() in C, but &quot;int.js&quot; etc...) ,, git repot, etc.... Once you answer the question, it will show a prevew of the content of the package.json</p>\n<p>This will generate a package configeration file that might look like:</p>\n<pre><code>{\n  &quot;name&quot;: &quot;javascripting&quot;,\n  &quot;version&quot;: &quot;1.0.0&quot;,\n  &quot;description&quot;: &quot;&quot;,\n  &quot;main&quot;: &quot;introduction.js&quot;,\n  &quot;scripts&quot;: {\n    &quot;test&quot;: &quot;echo \\&quot;Error: no test specified\\&quot; &amp;&amp; exit 1&quot;\n  },\n  &quot;author&quot;: &quot;&quot;,\n  &quot;license&quot;: &quot;ISC&quot;\n}\n</code></pre>\n<h2>Adding Packages to folder</h2>\n<p><strong>Unlike other languages like say python. In node.js installing a package will be local only to the folder itself, it's locally scoped (like in python virtural enviroment). So installing a package in one folder, does not mean it will be present in another. This might seem annoying now, but it makes versioning easier</strong></p>\n<p>So with the example of the package 'exampleProj', how do you install or uninstall temporarily for a project (Temporary, in the sense that it is not recorded as a dependency in project.json)?</p>\n<p><code>npm install exampleProj</code>\n:\tThis command will do a local install to a folder</p>\n<p><code>npm uninstall exampleProj</code>\n:\tThis command will do a local install to a folder</p>\n<p>You will be using these above commands for temporary development work.</p>\n<h2>Recording Package installs to project.json</h2>\n<p>So when you actually do want to record a dependency (so that it will be autoinstalled on <code>npm install</code> command). Then you will be using the <code>--save</code> switch in npm.</p>\n<p><code>npm install exampleProj --save</code>\n:\tThis command will install and record the dependency to project.json</p>\n<p><code>npm install exampleProj@3.2.3 --save</code>\n:\tThis command is similar to above, but is restricted to a version.</p>\n<p><code>npm uninstall exampleProj --save</code>\n:\tThis command will uninstall and record the removal of the dependency to project.json</p>\n<h2>Deployment</h2>\n<p><code>npm install</code>\n:\tThis command will read the <code>dependency</code> tag for package version, and install all missing packages that is necessary to make the project work quickly. You will be using this for deployment of code to clients etc...</p>\n<p><code>npm uninstall</code>\n:\tThis command will read the <code>dependency</code> tag for package version, and remove all installed packages that matches these dependencies.</p>\n<hr />\n<p>npm outsdated\n: \tThis is for keeping track of versining and if we should upgrade any of the dependenceies.</p>\n",
      "date_published": "2015-01-10T11:32:00Z"
    },
    {
      "id": "/blog/2015/01/02/reverse-engineering-rrd-102-v2.0-fm-radio-module-with-rds-decoding-capability/",
      "url": "/blog/2015/01/02/reverse-engineering-rrd-102-v2.0-fm-radio-module-with-rds-decoding-capability/",
      "title": "Reverse Engineering RRD-102 V2.0 FM Radio Module With RDS decoding capability",
      "content_html":"<p>To solve the issue of not knowing what song was playing over the radio, I am looking to create an FM display that shows a log of the (Radio Data System) RDS signal that is included in all broadcast FM stations (Incidentally short news, song title, station names, can be found via RDS). Looking at ebay for a cheap radio module, I came across this radio module ( PCB model RRD-102 V2.0) that breaks out the relevant pins of the RDA5807M Broadcast FM radio tuner IC. I chose this chip because it has RDS decoding capability baked into the device itself already (greatly reducing the amount of work needed to decode the RDS signal).</p>\n<p>Unfortunately like many things in life, you do get what you pay for. This module did not come with any documentations (unlike the TEAxxx module which cost a bit more, but have bigger community support around it). At the very least, the datasheet for this device can be found (you can contact me for it, or check if I included it in this page), which shows the pinout of the actual chip itself.</p>\n<p>Using the pinouts from the datasheet, I was able to trace out which wires goes where, and below you can see the resulting pinout for this module. I am also able to confirm that the I2C pins labels are correct, as I am able to interface with it via the BUS_PIRATE electronic tool.</p>\n<p>If you are looking for the pinout, you can find it here below. Do note that SDIO==SDA and SCLK==SCK (since they are both I2C pins). Also make sure to place a pull up resistor for each I2C pins. Lastly note that this is a 3.0V device (so 3.3V VCC input will work well, but a 5V input will kill it)</p>\n<p>Next step now, is to communicate with the module, but that is a story for another time.</p>\n<p><strong>Please comment below or email me if you found this useful!</strong></p>\n<!--more-->\n<pre><code>\nnote: N/C ~= Unconnected Pins\n\n\t\t\t\t{FRONT}\n\n    -------------------------------------\n\t|\t\t\t\t\t\t\t\t\t|\n\t|\t\t\t\t\t\t\t\t\t|\n\t1)-SDIO\t\t\t\t\t  FM-Aerial-(10\n\t|\t\t|\t|\t|\t|\t|\t\t\t|\n\t|\t\t-----------------\t\t\t|\n\t2)-SCLK\t|\t\t\t\t|\t\tN/C-(9\n\t|\t\t| RDA5807M \t\t|\t\t\t|\n\t|\t\t| Broadcast\t\t|\t\t\t|\n\t3)-N/C\t| FM Tuner \t\t|\t   ROUT-(8\n\t|\t\t-----------------\t\t\t|\n\t|\t\t|\t|\t|\t|\t|\t\t\t|\n\t4)-N/C\t\t\t\t\t\t   LOUT-(7\n\t|\t\t\t\t\t\t\t\t\t|\n\t|\t\t---------------------\t\t|\n\t5)-VCC\t| 32.768Mhz Crystal\t|\tGND-(6\n\t|\t\t---------------------\t\t|\n\t|\t\t\t\t\t\t\t\t\t|\n\t-------------------------------------\n\n\n\t\t\t\t{BACK}\n\t\t\t\t\n\t-------------------------------------\n\t|\t\t\t\t\t\t\t\t\t|\n\t|\t\t\t\t\t\t\t\t\t|\n\t)\t\t\t\t\t\t\t\t\t(\n\t|\t\t\tRRD-102\t\t\t\t\t|\n\t|\t\t\t\t\t\t\t\t\t|\n\t)\t\t\t\t\t\t\t\t\t(\n\t|\t\t\tVer: 2.01\t\t\t\t|\n\t|\t\t\t\t\t\t\t\t\t|\n\t)\t\t\t\t\t\t\t\t\t(\n\t|\t\t\t\t\t\t\t\t\t|\n\t|\t\t\t\t\t\t\t\t\t|\n\t)\t\t\t\t\t\t\t\t\t(\n\t|\t\t\t\t\t\t\t\t\t|\n\t|\t\t---------------------\t\t|\n\t)\t\t| 32.768Mhz Crystal\t|\t\t(\n\t|\t\t---------------------\t\t|\n\t|\t\t\t\t\t\t\t\t\t|\n\t-------------------------------------\n\t\n</code></pre>\n<h2>Bus Pirate Log</h2>\n<pre><code>\n?\n General\t\t\t\t\tProtocol interaction\n ---------------------------------------------------------------------------\n ?\tThis help\t\t\t(0)\tList current macros\n =X/|X\tConverts X/reverse X\t\t(x)\tMacro x\n ~\tSelftest\t\t\t[\tStart\n #\tReset the BP   \t\t\t]\tStop\n $\tJump to bootloader\t\t{\tStart with read\n &amp;/%\tDelay 1 us/ms\t\t\t}\tStop\n a/A/@\tAUXPIN (low/HI/READ)\t\t&quot;abc&quot;\tSend string\n b\tSet baudrate\t\t\t123\n c/C\tAUX assignment (aux/CS)\t\t0x123\n d/D\tMeasure ADC (once/CONT.)\t0b110\tSend value\n f\tMeasure frequency\t\tr\tRead\n g/S\tGenerate PWM/Servo\t\t/\tCLK hi\n h\tCommandhistory\t\t\t\\\tCLK lo\n i\tVersioninfo/statusinfo\t\t^\tCLK tick\n l/L\tBitorder (msb/LSB)\t\t-\tDAT hi\n m\tChange mode\t\t\t_\tDAT lo\n o\tSet output type\t\t\t.\tDAT read\n p/P\tPullup resistors (off/ON)\t!\tBit read\n s\tScript engine\t\t\t:\tRepeat e.g. r:10\n v\tShow volts/states\t\t;\tBits to read/write e.g. 0x55;2\n w/W\tPSU (off/ON)\t\t&lt;x&gt;/&lt;x= &gt;/&lt;0&gt;\tUsermacro x/assign x/list all\nHiZ&gt;P\nCommand not used in this mode\nHiZ&gt;m4\nSet speed:\n 1. ~5KHz\n 2. ~50KHz\n 3. ~100KHz\n 4. ~400KHz\n\n(1)&gt;1\nReady\nI2C&gt;0\nWRITE: 0x00 ACK \n\n(1)&gt;3\nDisplay format set\nI2C&gt;(1)\nSearching I2C address space. Found devices at:\nWarning: *Short or no pull-up \n\nI2C&gt;P\nPull-up resistors ON\nWarning: no voltage on Vpullup pin\nI2C&gt;(1)\nSearching I2C address space. Found devices at:\nWarning: *Short or no pull-up \n\nI2C&gt;P\nPull-up resistors ON\nWarning: no voltage on Vpullup pin\nI2C&gt;v\nPinstates:\n1.(BR)\t2.(RD)\t3.(OR)\t4.(YW)\t5.(GN)\t6.(BL)\t7.(PU)\t8.(GR)\t9.(WT)\t0.(Blk)\nGND\t3.3V\t5.0V\tADC\tVPU\tAUX\tSCL\tSDA\t-\t-\nP\tP\tP\tI\tI\tI\tI\tI\tI\tI\t\nGND\t0.00V\t0.00V\t0.00V\t0.00V\tL\tL\tL\tL\tL\t\nI2C&gt;P\nPull-up resistors ON\nWarning: no voltage on Vpullup pin\nI2C&gt;?\n General\t\t\t\t\tProtocol interaction\n ---------------------------------------------------------------------------\n ?\tThis help\t\t\t(0)\tList current macros\n =X/|X\tConverts X/reverse X\t\t(x)\tMacro x\n ~\tSelftest\t\t\t[\tStart\n #\tReset the BP   \t\t\t]\tStop\n $\tJump to bootloader\t\t{\tStart with read\n &amp;/%\tDelay 1 us/ms\t\t\t}\tStop\n a/A/@\tAUXPIN (low/HI/READ)\t\t&quot;abc&quot;\tSend string\n b\tSet baudrate\t\t\t123\n c/C\tAUX assignment (aux/CS)\t\t0x123\n d/D\tMeasure ADC (once/CONT.)\t0b110\tSend value\n f\tMeasure frequency\t\tr\tRead\n g/S\tGenerate PWM/Servo\t\t/\tCLK hi\n h\tCommandhistory\t\t\t\\\tCLK lo\n i\tVersioninfo/statusinfo\t\t^\tCLK tick\n l/L\tBitorder (msb/LSB)\t\t-\tDAT hi\n m\tChange mode\t\t\t_\tDAT lo\n o\tSet output type\t\t\t.\tDAT read\n p/P\tPullup resistors (off/ON)\t!\tBit read\n s\tScript engine\t\t\t:\tRepeat e.g. r:10\n v\tShow volts/states\t\t;\tBits to read/write e.g. 0x55;2\n w/W\tPSU (off/ON)\t\t&lt;x&gt;/&lt;x= &gt;/&lt;0&gt;\tUsermacro x/assign x/list all\nI2C&gt;W\nPOWER SUPPLIES ON\nI2C&gt;v\nPinstates:\n1.(BR)\t2.(RD)\t3.(OR)\t4.(YW)\t5.(GN)\t6.(BL)\t7.(PU)\t8.(GR)\t9.(WT)\t0.(Blk)\nGND\t3.3V\t5.0V\tADC\tVPU\tAUX\tSCL\tSDA\t-\t-\nP\tP\tP\tI\tI\tI\tI\tI\tI\tI\t\nGND\t3.24V\t4.80V\t0.00V\t3.22V\tL\tH\tH\tH\tH\t\nI2C&gt;v\nPinstates:\n1.(BR)\t2.(RD)\t3.(OR)\t4.(YW)\t5.(GN)\t6.(BL)\t7.(PU)\t8.(GR)\t9.(WT)\t0.(Blk)\nGND\t3.3V\t5.0V\tADC\tVPU\tAUX\tSCL\tSDA\t-\t-\nP\tP\tP\tI\tI\tI\tI\tI\tI\tI\t\nGND\t3.29V\t4.80V\t0.00V\t3.31V\tL\tH\tH\tH\tH\t\nI2C&gt;(1)\nSearching I2C address space. Found devices at:\n0b00100000(0b00010000 W) 0b00100001(0b00010000 R) 0b00100010(0b00010001 W) 0b00100011(0b00010001 R) 0b11000000(0b01100000 W) 0b11000001(0b01100000 R) \n\n\n</code></pre>\n<h2>Extra Resources</h2>\n<p>Since we got the pinouts, we could perhaps use these ready made libs etc...</p>\n<ul>\n<li>https://github.com/Seeed-Studio/I2C_FM_Receiver</li>\n<li>https://github.com/mathertel/Radio - An Arduino library to control radio chips like SI4703, RDA5807M (With RDS parsers included)</li>\n</ul>\n",
      "date_published": "2015-01-02T20:23:00Z"
    },
    {
      "id": "/blog/2014/12/31/posiflex-pp7000ii-usb-printer-adapter-teardown/",
      "url": "/blog/2014/12/31/posiflex-pp7000ii-usb-printer-adapter-teardown/",
      "title": "Posiflex PP7000II usb printer adapter reverse engineering",
      "content_html":"<p>This is useful for those who is seeking a way to interface directly to a Posiflex PP7000II, with a micro controller. This was done by looking at the pcb board of the usb printer adapter for the Posiflex PP7000II printer. Read this if you have a similar printer, and you are hoping to interface to it via say an arduino, or a PIC, or AVR, or even a raspberry pi.</p>\n<p>On the PCB board, the main component that does the serial to usb conversion is the &quot;FTDI FT232BM 518-1&quot; chip. I previously tried to get the adapter to work normally, but however the driver for the printer was too old, and the manufacture no longer supplies the driver for it. This would usually mean that this printer would go to the landfill, but aside from the driver issue, it was a perfectly good working printer (Which is quite a shame that manufactures would create products that they would eventually render as obsolete, forcing it into the landfill. I'm looking at you ink jet manufactures).</p>\n<p>Anyway straight to business. Here is the results by tracing the pinouts from the FT232BM converter ICs to the header pins that connects to the printer.</p>\n<pre><code>GND = 0V\nVCC = 5V\nTxD = Printer Transmit Pin\nRxD = Printer Recieve Pin\nDSR = Data Set Ready\nRTS = Ready TO Send\nRST = RESET ( i think...)\n\n{ Pins from printer facing upwards }\n| GND  | GND  | GND  | VCC | VCC |\n| RST# | DSR# | RTS# | TxD | RxD | \n\n`````\n\n\n```\nGND = 0V\nVCC = 5V\nTxD = Adapter Transmit Pin\nRxD = Adapter Recieve Pin\n\n{ Pins from adapter to slot into printer adapter port}\n| GND  | GND  | GND  | VCC | VCC |\n| RST# | DTR# | CTS# | RxD | TxD | \n\n```\n\n```\nDTR - Data Terminal Ready\nDSR - Data Set Ready\nRTS - Request To Send\nCTS - Clear To Send\n\nRTS --&gt; CTS\n\nDTR --&gt; DSR\n```\n\n\n\n## Raw Reverse Engineering log: \n\n```\nInterface is a serial 5V pinout, which is shown in the back already.\n\nCurrently using an FTDI chip to make it work. Via Hercules SETUP utility by HW-group.com\n\nSerial setup as 19200 baud, 8 bits, no parity, with RTS/CTS handshake, at Mode Free.\n\nSuspected to accept ESC / POS commands\n\ne.g.\n\nPrint text:\n0x1B , &quot;@Hello World&quot; :- Prints Hello World, auto wordwrap\n\n0x1B , &quot;@Hello World&quot;,  0x0A :- Gets a &quot;Hello World&quot; text printed in the thermal paper and then increment paper.\n\n0x1B , &quot;-@Hello World&quot;,  0x0A :- Gets an UNDERLINED &quot;Hello World&quot; text printed on next line feed.\n\n0x1D, B, 0x1B, &quot;Black or White&quot;, 0x0A :- Creates a black and white print of &quot;Black or White&quot;\n\nFEED paper:\n0x0A :- Moves the thermal paper up once.\n\nBeep:\n0x1B, o :- Beeps a sound using the internal speaker in printer\n\nCut Paper:\n0x1D, V, 0 :- Auto feeds 1 inch and then, Full Cut (Reverts to partial cut if full cut cannot be done)\n0x1D, V, 1 :- Auto feeds 1 inch then, Partial cut\n\n\n----------\n\n0x1B :- Hex ASCII code for Escape command\n0x0A :- Hex ASCII code for Line Feed\n0x1D :- Hex ASCII code for GS control character (Group Separator)\n@ :- ASCII command char for printing a line of text\n\n=-----\n\nhttp://support.epostraders.co.uk/support-files/documents/21/XRx-PP7000-II-PP7000IIU_Technical_Information.pdf\n\nhttp://printarduino.blogspot.com.au/2010/02/arduino-and-thermal-printers.html\n\nhttp://content.epson.de/fileadmin/content/files/RSD/downloads/escpos.pdf pg 6\n\nhttp://support.epson.ru/products/manuals/000350/part1.pdf\n\nhttp://nicholas.piasecki.name/blog/2009/12/sending-a-bit-image-to-an-epson-tm-t88iii-receipt-printer-using-c-and-escpos/\n      \n\n-------------\n\nOn installing an ESC/POS driver for this serial printer\n\nhttp://www.kbytes.co.uk/Articles.asp?articleid=58 - installing generic drivers\n\nTrying out EPSOM&gt; EPSOM ESC/P Standard 10 V4 Class driver\n\n-------\n```</code></pre>\n",
      "date_published": "2014-12-31T00:00:00Z"
    },
    {
      "id": "/blog/2014/12/03/post-truncation-in-jekyll/",
      "url": "/blog/2014/12/03/post-truncation-in-jekyll/",
      "title": "Post Truncation In Jekyll",
      "content_html":"<p>Was working on improving this jekyll blog, when I cam across the issue of truncating blog post for the front page view.</p>\n<p>By default it only shows the first paragraph with ``. However I wanted to show pictures. Thus...</p>\n<p>There is 3 approaches I could have done here.</p>\n<!--more-->\n<ol>\n<li>\n<p>Limit post by number of words. But this may cut off html tags, thus messing up the presentation. <code>{{ post.content | truncatewords: 50 }}</code> or you could try stripping html, but you lose images. which is unacceptable to me. <code>{{ post.content | strip_html | truncatewords: 50 }}</code></p>\n</li>\n<li>\n<p>Truncate by paragraph <a href=\"http://stackoverflow.com/questions/21161918/liquid-templating-truncate-n-paragraphs\">like shown in this stack overflow page</a>. This is not as bad, but it lack the ability to control presentation.</p>\n<pre><code>\n{%- set truncatedContent = '' %}\n{%- set paragraphs = post.content | split:'&lt;/p&gt;' %}\n{%- for paragraph in paragraphs limit:N %}\n\t{{ truncatedContent | append: paragraph }}\n\t{{ truncatedContent | append: '&lt;/p&gt;' }}\n{%- endfor %}\n\n</code></pre>\n</li>\n<li>\n<p>Truncate by splitting at <code>&lt;!--more--&gt;</code> (which is how wordpress typically does things). Here is an example from http://mikeygee.com/blog/truncate.html :</p>\n<pre><code>\n{%- for post in site.posts limit:10 %}\n\t&lt;div class=&quot;post-preview&quot;&gt;\n\t\t&lt;h2&gt;&lt;a href=&quot;{{ post.url }}&quot;&gt;{{ post.title }}&lt;/a&gt;&lt;/h2&gt;\n\t\t&lt;div class=&quot;post-date&quot;&gt;{{ post.date | date: &quot;%B %d, %Y&quot; }}&lt;/div&gt;\n\t\t{{ post.content | split:'&lt;!--break--&gt;' | first }}\n\t\t{%- if post.content contains '&lt;!--break--&gt;' %}\n\t\t\t&lt;a href=&quot;{{ post.url }}&quot;&gt;read more&lt;/a&gt;\n\t\t{%- endif %}\n\t&lt;/div&gt;\n\t&lt;hr&gt;\n{%- endfor %}\n\n</code></pre>\n</li>\n</ol>\n<p>I chose option 3, since it gives most flexibility. However my issue with this previous code is that it doesn't stick to the standard of wordpress using <code>&lt;!--more--&gt;</code> as the tag. Also if I forget to place the <code>&lt;!--more--&gt;</code> tag, then the entire post just gets dumped into the front page. This is undesirable. Thus the code was customised as shown below to correct for this issue.</p>\n<p>If the <code>&lt;!--more--&gt;</code> tag is detected, then an excerpt based on <code>&lt;!--more--&gt;</code> is used. If <code>&lt;!--more--&gt;</code> is not detected then by default the first paragraph is used instead.</p>\n<h2>Use me!</h2>\n<pre><code>\n{%- if post.content contains '&lt;!--more--&gt;' %}\n\t{{ post.content | split:'&lt;!--more--&gt;' | first }}\n{%- else %}\n\t{{ post.excerpt }}\n{%- endif %}\n\t&lt;a href=&quot;{{ post.url }}&quot;&gt;read more&lt;/a&gt;\n\n</code></pre>\n<p>If you like this, then dont forget to credit the modification to me, and the original code to mikeygee http://mikeygee.com/blog/truncate.html .</p>\n<p>Reference:</p>\n<ul>\n<li>http://sarathlal.com/escape-liquid-template-tags-in-jekyll-posts/ -- used this to escape/comment out liquid template code in jekyll</li>\n<li>http://mikeygee.com/blog/truncate.html</li>\n</ul>\n",
      "date_published": "2014-12-03T15:55:00Z"
    },
    {
      "id": "/blog/2014/12/02/upc-barcode-scanner/",
      "url": "/blog/2014/12/02/upc-barcode-scanner/",
      "title": "1D barcode scanner",
      "content_html":"<p>Got some barcode scanner off ebay. It's the usb type 1d barcode scanner. Model type MJ-4209 .\n<img src=\"/projects/barcode_scanner/MJ-4209_scanner_small.JPG\" alt=\"A picture of the MJ-4209 laser Barcode scanner\" /></p>\n<p>It came with a manual full of barcodes that allows for scanning it to set settings.</p>\n<p>One of it was for version control. Which when scanned gave:</p>\n<pre><code>MJ_tech V3.00 2014/03/01\n</code></pre>\n<!--more-->\n<p>If you need a copy of the manual, here it is:</p>\n<p><img src=\"data:image/png;base64,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\" alt=\"barcode manual as png\" /></p>\n<p>If you need the pinout, for the scanner, then here it is as well from the datasheet for MJ-4209</p>\n<p><img src=\"data:image/png;base64,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\" alt=\"pinout for MJ-4209 as png\" /></p>\n<p><strong>Interesting side note to observe:</strong></p>\n<ul>\n<li>In ps2 keyboard interface mode, there is PCCLK/PCDATA as well as KBCLK/KBDATA . You can infer from these keywords (and confirm with a google image search), that the scanner essentially acts as a pass-thorough for a ps2 keyboard ( KBCLK/KBDATA --&gt; PCCLK/PCDATA ) . Incidentally, this is also a good spot to place a keylogger. Especially for paranoid organizations that likes to do weird things like &quot;gunk up the usb slot&quot; to prevent leakage of sensitive information. :D</li>\n<li>Settings is only between KB/USB or UART. You can notice that the PCCLK/PCDATA pins is the same for usb mode. Recall that there is usb to ps2 adaptors for usb optical mouses. This is since ps2/usb mode is autodetected by the fact that usb is using balanced pair transmission and ps2 doesn't (it uses serial on one line plus a clock signal on the other. If you detect a steady pulse on one line only, then it's probbly a ps2 slot.)</li>\n</ul>\n<pre class=\"language-ascii-dia\"><code class=\"language-ascii-dia\">CAT5 ETHERNET CABLE:\nPin Number\tStrand color\n1\torange stripe\n2\torange\n3\tgreen stripe\n4\tblue*\n5\tblue stripe*\n6\tgreen\n7\tbrown stripe*\n8\tbrown*\n\nEthernet Pinout Front View: \n   ______________________  \n  /                      \\  \n /                        \\ \n+--------------------------+\n|  8  7  6  5  4  3  2  1  |\n|                          |\n+-----+              +-----+\n      +--------------+      \n\nSRC: \n* http://www.gnswireless.com/bulk_cat5e_ethernet_cable.htm\n* http://www.cscape.net/modplugstandard.html</code></pre>\n<p>This two will allow you to interface with the device using a normal Ethernet cable modified to tap into those pins (remember to ensure the RX and TX lines are not twisted).</p>\n<h2>So we want to tap into UART mode using standard &quot;RS-232/TTL&quot; pin-out via an Ethernet cable</h2>\n<p>If an Ethernet cable has the correct configuration, we can save time by just using the colours. Recall the pinout for both the scanner and Ethernet. So when combined:</p>\n<pre><code>Ethernet cable pinout Vs scanner pinout:\n(Ethernet uses 8pin, scanner port uses 10pin\n\n EthPin# | Eth Cable colour | ScanPin#  | scanner pin function\n-----------------------------------------------------------\n\t\t\t\t\t\t\t|\t1\t\t|\t NC\n\t1\t |\torange stripe\t|\t2\t\t|\t +5V\n\t2    |\torange\t\t\t|\t3\t\t|\t GND\n\t3    |\tgreen stripe\t|\t4\t\t|\t RXD\n\t4    |\tblue*\t\t\t|\t5\t\t|\t NC\n\t5    |\tblue stripe*\t|\t6\t\t|\t NC\n\t6    |\tgreen\t\t\t|\t7\t\t|\t NC\n\t7    |\tbrown stripe*\t|\t8\t\t|\t RTS\n\t8    |\tbrown*\t\t\t|\t9\t\t|\t TXD\n\t\t\t\t\t\t\t|\t10\t\t|\t CTS\n</code></pre>\n<p>So judging from the pinout. The standard Ethernet cable can connect pretty much everything, except for the CTS line. (Luckily) This will not matter for our purpose, as I plan to just use 5V,GND,RX &amp; TX lines only, using software flow control.</p>\n<h2>What's the ethernet colour to use when wiring for scanner uart?</h2>\n<p>Thus using typical Ethernet cable would be wired as this:</p>\n<p>StripedOrange == 5V | Orange == GND | GreenStripe == RXD | Brown = TXD</p>\n<h2>So! Let's wire it up!</h2>\n<p>I got a spare ethernet cable, I got an FTDI FT232RL SERIAL/USB dongle, and I got a scanner.</p>\n<p>So, basically, I cut the ethernet cable in half (using the above cable colour direction as a guide), wired the RX to the TX of the dongle and the TX to the RX of the dongle. Hooked up the power supply rails. Plug the serial/usb dongle, and boot up a serial console.</p>\n<pre><code>|\tETHERNET CABLE\t\t|\t\t|\tSERIAL TO USB\t\t|\n| Connected to MJ-4209\t|\t\t|\tConverter\t\t\t|\n| 1D Barcode Scanner\t|\t\t|\tFT232RL (By FTDI)\t|\n|=======================|\t\t|=======================|\n|\t\t\t\t\t\t|\t\t|\t\t\t\t\t\t|\n|\tStripedOrange | +5V |:-----:| +5V |\tPower Rail Upper|\n|\tOrange \t\t  | GND |:-----:| GND | Power Ground\t|\n|\t\t\t\t\t\t|\t\t|\t\t\t\t\t\t|\n|\tGreenStripe\t  | RXD |:-   -:| RXD | Serial Receive\t|\n|\t\t\t\t\t\t|  \\ /\t|\t\t\t\t\t\t|\n|\t\t\t\t\t\t|\tX &lt;--crossover (not joined)\t|\n|\t\t\t\t\t\t|  / \\\t|\t\t\t\t\t\t|\n|\tBrown\t\t  | TXD |:-   -:| TXD | Serial Transmit\t|\n\n</code></pre>\n<p>When done, it shall look like this:</p>\n<p><img src=\"/projects/barcode_scanner/1D_scanner_to_FTDIdongle.jpg\" alt=\"A picture of the MJ-4209 laser Barcode scanner hooked to an FTDI Serial to USB dongle\" /></p>\n<p>Now, I set the scanner to &quot;UART 9600, NO, 8, 1&quot; ( Using the document manual called &quot;Manual Guide&quot; that you can find in this page).</p>\n<p>After that, when I scan the MJ_tech demo barcode, it actually showed up! However, it didn't have newline inbetween, so hard to tell which is a new barcode. So in the &quot;Data Edit Setting&quot; I switch the scanner to use &quot;CR+Skip&quot; <code>\\r\\n</code>, but you could also use\n&quot;skip&quot; <code>\\n</code>, or TAB <code>\\t</code>. Depends on how you code the destination microprocessor's firmware (Or PC etc...).</p>\n<p>This is what it looks like when you use CR <code>\\r</code> only:</p>\n<pre><code>MJ_techMJ_techMJ_techMJ_tech\n</code></pre>\n<p>Thus in general, you would prefer to use either &quot;skip&quot; <code>\\n</code> or &quot;CR+Skip&quot; <code>\\r\\n</code></p>\n<pre><code>MJ_tech\nMJ_tech\nMJ_tech\nMJ_tech\nMJ_tech\nMJ_tech\nMJ_tech\nMJ_tech\nMJ_tech\nMJ_tech\nMJ_tech\nMJ_tech\n</code></pre>\n<p>So that's it! You got it interfacing over UART! (Oh and btw, I used the Arduino serial console to talk to the FT232RL. It was set to 9600 baud, set to &quot;Both NL &amp; CR&quot; )</p>\n<h2>So what does this mean?</h2>\n<p>It means you could potentially hook this to a microcontroller, or an arduino project, since you now know the pinout of the serial uart cable for this scanner.</p>\n<p>What can you do with this capability? Well how about this idea. Automated inventory management on the cheap etc...</p>\n<p>Let me know if this is helpful to you on the comments below XD</p>\n<h2>Extra stuff from MJ-4209 datasheet</h2>\n<p>Here are the characteristics from the same datasheet:</p>\n<pre><code>Net weight : 115 g\nMaterial : ABS+PC\nVoltage : 5 V +/- 10%\nCurrent:110mA , idle 10mA\nColor: gray, black\n\nPerformance Characteristics::\n\nScanner type:\t\t bi-directional\nLight source:\t\t 650nm Visible laser diode\nScanning Rate:\t\t 100 scans per second\nScanning distance:\t 2.5mm-600mm\nScanning scope:\t\t 18CM\nPrint contrast:\t\t 25% minimum reflective difference\n①Roll(tilt):\t\t +/- 30degrees\n②Pitch:\t\t\t\t +/- 45 degrees\n③Skew(yaw):\t\t\t +/- 60 degrees\nDecodeCapability:\tUPC/EAN, UPC/EANwithsupplementalsCode128, UCC/EAN128, Code39Code39FullASCII, Code128FullASCII, Codabar, Interleaved2of5, Code93, MSI, Code11, ISBN, ISSN, china post code, etc\nBit error rate:\t\t 1/500million\nResolution:\t\t\t 4mil(0.1mm)\nTip :\t\t\t\t buzzer and led\nScanning mode :\t\t Press button, Automatic continuous scan Auto-induction,\nWorking times of button :\t 3 million times\nWorking hours of laser:\t\t 10000hours\nInterfaces supported:\t\t RS232,keyboard wedge, USB.\nCable length:\t\t\t\t 2M\n\nUser Environment::\n\nWorking temperature:\t 0oC-45oC\nStorage temperature:\t -400oC-60oC\nRelative humidity:\t\t 5%-95%(Non-condensing)\nAnti-shock design:\t\t withstand 1.8M drops\nAmbient light immunity:\t immune to direct exposure of normal office and factory lighting conditions, As well as direct exposure to sunlight.\n\nRegulatory::\n\nElectrostatic discharge:\t certified to ±15KV air discharge and ±8KV of contact discharge\nEMI/RFI:\t\t\t\t\t FCC Part 15 Class B,European Union EMC Directive,Taiwan EMC,CE\nLaser safety:\t\t\t\t CDRH Class II,IEC Class 2\nenvironmental protection:\t certified to RoHS directive 2002/95/EEC\n</code></pre>\n<p>Related:</p>\n<ul>\n<li>http://www.reddit.com/r/hardware/comments/1w6a2t/upc_code_scanner_question/</li>\n<li>http://www.symcode.net/support/2013-10/05092551765176.pdf</li>\n</ul>\n",
      "date_published": "2014-12-02T23:12:00Z"
    },
    {
      "id": "/blog/2014/12/01/esp8266-a-curious-little-wifi-module/",
      "url": "/blog/2014/12/01/esp8266-a-curious-little-wifi-module/",
      "title": "ESP8266 A curious little wifi module",
      "content_html":"<p>Just found out about this really curious piece of kit. It is a tiny chip with an embedded ARM microprocessor and a wifi stack all miniturised into one tiny surface mount chip. Cheap to boot too!</p>\n<!--more-->\n<p>Right now, I am just learning how to use it. So my first configuration is to hook the module up to a serial dongle.</p>\n<blockquote>\n<p>The Seeed tutorial is written for the version 1 module with a 57600 baud rate serial link. The version 2 module that is currently shipping runs at 115200 bps.</p>\n</blockquote>\n<p><a href=\"http://hackaday.io/project/3072/instructions\">quote source</a></p>\n<pre class=\"language-ascii-dia\"><code class=\"language-ascii-dia\">\nThis is what my module looks like. You can get it cheap from ebay\nThe newer module has LEDs near the antenna\n\n    _________________________________________________________________\n\t|\t\t\t\t \t__________\t\t\t\t\t\t\t\t\t|\n\t|\t\t\t\t\t|\t\t |\t\t\t\t\t\t\t\t\t|\n\t|\t|\t\t\t\t| EEPROM |\t\t\t(RX)\t\t(VCC)\t\t|\n\t|\t|___\t\t\t|________|\t\t\t\t\t\t\t\t\t|\n\t|\t____|\t|\t_________________\t\t(GPIO0)\t\t(RESET)\t\t|\n\t|\t|___\t|\t|\t\t\t\t|\t\t\t\t\t\t\t\t|\n\t|\t____|\t|\t|\tESP8266\t\t|\t\t(GPIO2)\t\t(CH_PD)\t\t|\n\t|\t|___\t|\t| Wifi+ARM_MCU  |\t\t\t\t\t\t\t\t|\n\t|\t____|\t|\t|_______________|\t\t(GND)\t\t(TX)\t\t|\n\t|\t|_______|__\t\t\t\t\t\t\t\t\t\t\t\t\t|\n\t|_______________________________________________________________|\n\t\n\tRX\t\t:\tUART Receive Pin (Connects to TX of other device)\n\tVCC\t\t:\t3.3V Upper Power rail (Input power)\n\tGPIO0\t:\tGeneral Purpose Input Output (0)\n\tRESET\t:\tReset Device\n\tCH_P2\t:\tGeneral Purpose Input Output (2)\n\tCH_PD\t:\tChip Enable Pin (pull high)\n\tGND\t\t:\t0V Power Ground\n\tTX\t\t:\tUART Transmit Pin  (Connects to RX of other device)\n\t\n\t\nFeel free to copy and reuse this diagram. Just remember to credit me. ( briankhuu.com )\n\t</code></pre>\n<h2>Initial setup</h2>\n<ul>\n<li>ESP8266 VCC and GND directly wired to the FT232RL (FTDI serial to usb converter)</li>\n<li>RX and TX directly hooked to TX and RX respectively of FT232</li>\n</ul>\n<ul>\n<li>Usually not recommended to hook it up like that, since the input and output is ment to be within 3.3v</li>\n</ul>\n<p>So far I have wired it up, but suspect the board is using a higher firmware version and thus require CH_PD to be tied to 3.3V VCC. However no dice, but the LEDs on the modules started flashing randomly, as well as the serial dongle... on both RX and TX, even when I'm not sending any characters. The output is garbage regardless of baud rate.</p>\n<p>I think the issue here, is that this is a big of a power hog and the FTDI chip included is not powerful enough to power it. So you'll want to hook a dedicated linear voltage regulator (or boost/buck regulators if you can afford to).</p>\n<h2>Using a 5v to 3.3v LDO regulator</h2>\n<ul>\n<li>Hooked the LM39401T 3.3V LDO voltage regulator inbetween the serial dongle and the ESP8266 wifi module.</li>\n</ul>\n<pre class=\"language-diagram\"><code class=\"language-diagram\">\n+------------+                          \n|     XX     |                          \n|   XX  XX   |                          \n|     XX     |                          \n+------------+                          \n|            |                          \n|  LM39401T  |                          \n|  3.3V LDO  |                          \n|  (LM3940)  |                          \n|            |                          \n+-+---++---+-+                          \n  ||  ||  ||                            \n  ||  ||  ||<----+ 3.3v output    \n  ||  ||                     \n  ||  ||<--------+ 0v Ground (Gnd)\n  ||                            \n  ||<------------+ 5v - 3.3v Input                                \n</code></pre>\n<ul>\n<li>SRC: http://datasheet.octopart.com/L7805CV-STMicroelectronics-datasheet-7264666.pdf</li>\n</ul>\n<p>Now when I plug it in,  the board starts to light up more brightly.</p>\n<p>Opening up the arduino serial console on 9600 bps as my baud rate setting. (seems that 115200 bps just get garbage characters. This also includes 57600 bps ). Seems that newer modules are distributed with slow serial links by default. I have a feeling it's popularity with the maker community that is full of Arduino users may have something to do with it.</p>\n<p>As soon as I pull the RESET pin of the ESP8266 down to ground and release it. This is what I got:</p>\n<pre><code>&lt;\n[System Ready, Vendor:www.ai-thinker.com]\n</code></pre>\n<p>Not sure what the initial garbage data means, but at least it seems the serial link to the module is now operational.</p>\n<h2>Trying out AT Commands</h2>\n<p>Here we try out <code>AT+RST</code> for resetting board, and <code>AT+CWMODE</code> for checking wifi mode.</p>\n<pre><code>AT+RST\n\n\nOK\nc_ÇÏRSöfJSúfJ[úfì\n[System Ready, Vendor:www.ai-thinker.com]\nAT+CWMODE\n\nno this fun\n</code></pre>\n<p>&quot;no this fun&quot; ... huh? well that's kind of a funny response. I guess that means we are not connected to anything. Which is true.</p>\n<p>So what's my firmware version number? Use <code>AT+GMR</code></p>\n<pre><code>AT+GMR\n\n0018000902\n</code></pre>\n<h2>AT Commands Quickstart</h2>\n<p>AT+GMR\n: Show firmware version</p>\n<p>AT+RST\n: restarts module</p>\n<p>AT+CWMODE=3\n: Change working mode to mode 3. This stands for AP+STA (Access Point Station)</p>\n<h3>Joining router</h3>\n<p>AT+CWLAP\n: Find and list wifi spots</p>\n<p>AT+CIFSR\n: Show IP address assigned to the module by the router</p>\n<p>AT+CWJAP=&quot;SSID NAME&quot;, &quot;PASSWORD&quot;\n: Connect to said access point</p>\n<p>AT+CWJAP=?\n: Check if connected successfully</p>\n<p>AT+CWJAP?\n: Same as <code>AT+CWJAP=?</code> but for some modules where the other command doesn't work.</p>\n<h3>TCP Client</h3>\n<p>AT+CIPMUX=1\n: Allow for multiple connections</p>\n<p>AT+CIPSTART=4,&quot;TCP&quot;,&quot;192,168.1.104&quot;,9999\n: connect to remote TCP server @ 192,168.1.104 (E.g. your PC)\n: Port number 9999</p>\n<p>AT+CIPMODE=1\n: Optional switch into data transmission mode</p>\n<p>AT+CIPSEND=4,5\n: Send data via channel 4, 5 bytes length. Auto unlinks, when no data is being transmitted.\n: e.g. Serial.print(&quot;AT+CIPSEND=&quot;);</p>\n<p>AT+CIPSEND=5\n: Send data via channel 5 bytes length. Auto unlinks, when no data is being transmitted.</p>\n<p>e.g. To send the header &quot;GET / HTTP/1.0\\r\\n&quot; lets start by connecting to server</p>\n<pre><code>AT+CIPMUX=0 \nOK \n\nAT+CIPSTART=&quot;TCP&quot;,&quot;173.194.123.5&quot;,80 \nOK Linked \n</code></pre>\n<p>Now start sending msg to server. There is 15 chars (or bytes) in &quot;GET / HTTP/1.0\\r\\n&quot;</p>\n<pre><code>AT+CIPSEND=16\n</code></pre>\n<p>Now send the data after waiting for the <code>&gt;</code> character</p>\n<p><code>&gt;</code> &lt;-- wait for this character to come in</p>\n<p>Then send this response (remember <code>\\r</code> and <code>\\n</code> are both single characters)</p>\n<p><code>GET / HTTP/1.0\\r\\n</code></p>\n<h3>TCP Server</h3>\n<p>AT+CIPSERVE=1,9999\n: =1 means enable, =0 means disable\n: setup TCP server on port 9999</p>\n<p>AT+CIFSR\n: Check module IP address</p>\n<h2>Well the module works</h2>\n<p>Haven't yet connected this device to a router, but that's pretty much the next step. Being able to see a wifi network is pretty cool already.</p>\n<p>References</p>\n<ul>\n<li>https://scargill.wordpress.com/2014/10/05/esp8266-working/</li>\n<li>https://nurdspace.nl/ESP8266#AT_Commands</li>\n<li>http://hackaday.io/project/3072/instructions</li>\n<li>http://tminusarduino.blogspot.com.au/2014/09/experimenting-with-esp8266-5-wifi-module.html</li>\n<li>https://drive.google.com/folderview?id=0BwK3EhAfht8uWTdBdG55NEFCakE&amp;usp=sharing</li>\n<li>http://www.electrodragon.com/w/Wi07c - Pretty much the same board, just renamed by that company... weird</li>\n<li>http://hackaday.io/project/3072/instructions &lt;-- Good</li>\n</ul>\n<hr />\n<p>Btw http://www.instructables.com/id/Guino-Dashboard-for-your-Arduino/?ALLSTEPS is pretty cool. It's a GUI dashboard for your arduino. Very handy for debugging.</p>\n",
      "date_published": "2014-12-01T14:54:00Z"
    },
    {
      "id": "/blog/2014/11/24/algorithmic-javascript-playground-toy/",
      "url": "/blog/2014/11/24/algorithmic-javascript-playground-toy/",
      "title": "Algorithmic Javascript Playground Toy",
      "content_html":"<p>Here is a collection of javascript programming toys for you to try out.  (heck you can even download it), where you can create algorithmic art using code. It was developed when I found that you can actually read the content of a url after the  <code>#</code> sign.</p>\n<p>Direct link to folder: <a href=\"/projects/js_algorithimic_sandbox\">link</a></p>\n<ul>\n<li>\n<p>urlhashloader.html : First file written. It's just a simple read and display kind of thing. Quite simply it is a platform for enabling remixable content shared via data embedded in the hash fields of urls (via javascript). E.g. shareable algorithmic music Feel free to remix and reuse, but please leave credit.</p>\n</li>\n<li>\n<p>imageGen.html : This is a simple black and white image generator, with some gradient capability. It was my second experiment.</p>\n</li>\n<li>\n<p>imageAlgoGen.html : This is a remixable algorithmic image generator.</p>\n</li>\n<li>\n<p>algoCanvasPlayer.html : This is a remixable algorithmic animation generator. Uses similar codes to imageAlgoGen but includes a t for time variable, which allows for animated scenes.</p>\n</li>\n<li>\n<p>algoMusicPlayer.html : Lets you play any algorithmic music. E.g. Try &quot;Math.round(255 * Math.random());&quot; . A test tone is played when this page is opened. ( 8Khz )</p>\n</li>\n</ul>\n<p>How does this 'save/load' to url work? If you look at the codes below from urlhashloader, it should make sense.</p>\n<p>Essentially the informations after the hash in the url is stored in <code>window.location.hash</code> . It is exposed to javascript to enable the back button of a browser to work, even for a fully javascript based website. E.g. Facebook uses it so that you can still go back to a particular page in the site, even if it is dynamically loaded via javascript.</p>\n<p>So what this script does, is first loads the hash content to a variable named hash. It is then saved to a global container via <code>document.getElementById(&quot;hashContent&quot;).value</code>. This is how we &quot;load url hash&quot; process.</p>\n<p>Do note that you cannot change the window.location.hash in the url field without having to refresh the page. This is why we have the loadHash() function, to change window.location.hash first, and then reload the entire page. This is how we &quot;save url hash&quot;, since the url is now updated (because we refreshed the page) and thus is now copyable by the user.</p>\n<p>Just note that there is an issue of firefox converting <code>%25</code> to <code>%%</code>, which messes the encoding up. Thus until it is fixed, I am using a hack to work around it.</p>\n<p><script type=\"text/javascript\"></p>\n<p>// Load current hash content http://stackoverflow.com/questions/298503/how-can-you-check-for-a-hash-in-a-url-using-javascript\nif(window.location.hash) { // hash found\n//There is an issue with firefox .location.hash implementation ( &quot;%25&quot; --&gt; &quot;%%&quot;) http://stackoverflow.com/questions/1703552/encoding-of-window-location-hash\n//var hash = decodeURI(window.location.hash.substring(1)); //Puts hash in variable, and removes the # character\nvar hash = decodeURI( (location.href.split(&quot;#&quot;)[1] || &quot;&quot;) ); // Hack to deal with firefox messing it up.\ndocument.getElementById(&quot;hashContent&quot;).value = hash ;\n}</p>\n<p>// Allow users to load a modified value of the content (for remixing)\nfunction loadHash(){\nwindow.location.hash = encodeURI( document.getElementById(&quot;hashContent&quot;).value );\nwindow.location.reload();\nsetTimeout(function(){location.reload(true);},100); //hacks for chrome http://stackoverflow.com/questions/9573333/safari-chrome-onsubmit-location-reloadtrue-not-working\n}</p>\n<p>// Convenient short cut http://w3epic.com/submit-form-by-ctrl-enter-or-other-custom-keys-using-javascript-or-jquery/\ndocument.getElementById(&quot;hashContent&quot;).onkeydown = function (e) {\nif (e.keyCode == 13 &amp;&amp; e.ctrlKey) { // keyCode 13 is Enter\ndocument.getElementById(&quot;send&quot;).click();\nreturn false;\n}\n}</p>\n<p>// Convenient autoheight textfield http://stackoverflow.com/questions/17772260/textarea-auto-height\nvar textfieldElement = document.getElementById('hashContent');\ntextfieldElement.setAttribute('style','height:'+textfieldElement.scrollHeight+'px');</p>\n<p></script></p>\n",
      "date_published": "2014-11-24T23:06:00Z"
    },
    {
      "id": "/blog/2014/11/24/text-to-speech-shoutbox/",
      "url": "/blog/2014/11/24/text-to-speech-shoutbox/",
      "title": "HTML5 Text To Speech Shoutbox",
      "content_html":"<p>Here is something you might find interesting. <a href=\"http://briankhuu.com/shoutbox/shoutbox_TTS.html\">This is a HTML5 text to speech shoutbox</a> . This works best for chrome browser, and is a recent addition to HTML5. This is quite a useful little program that you might want to know better. It's more of a toy at the moment, but I'm sure you can still find use for it.</p>\n<p>DEMO: <a href=\"http://briankhuu.com/shoutbox/shoutbox_TTS.html\">http://briankhuu.com/shoutbox/shoutbox_TTS.html</a></p>\n<p>Source Code: <a href=\"http://briankhuu.com/shoutbox/src/\">http://briankhuu.com/shoutbox/src/</a></p>\n<!--more-->\n<p>Version list:\nV7 - reducing polling, and ability to turn off TTS\nV6 - Shows last updated\nV5 - Fixed crash when not find TTS\nV4 - Generate time elapsed since last post\nV3 - Limit number of stored post to 100 posts.\nV2 - Generate last updated status image\nV1 - Start of first working shoutbox</p>\n<p>This is a mish mash of various codes to make a good platform for semi real time speech synth chatroom (Which would be good for web radio etc...)</p>\n<p>Mashup of codes by Brian Khuu (briankhuu.com) 2014</p>\n<p>Usage:\nPlace these files into a properly configered php webserver in /shoutbox/ folder (script must be able to create files). Then run either shoutbox.html for a low speed shoutbox (updates every 10 sec), and shoutbox_TTS.html for a highspeed shoutbox(3 sec update) with Text To Speech of any incoming messages.</p>\n<p>Concept:\nTo possibly allow for semi-realtime conversation without having to read the messages. E.g. hosting a radio interview behind TOR</p>\n<p>USES CODES FROM:</p>\n<hr />\n<p>HMTL5 Speech Synthsis API:\nMashed up by Brian Khuu briankhuu.com</p>\n<p>http://updates.html5rocks.com/2014/01/Web-apps-that-talk---Introduction-to-the-Speech-Synthesis-API</p>\n<hr />\n<p>Lifted codes and styling from:</p>\n<p>HTML code is very simple and comes from : http://instantchatbox.net/</p>\n<p>The licence for the javascript used above is :\n/***************************\n/\n//@Author: Adrian &quot;yEnS&quot; Mato Gondelle &amp; Ivan Guardado Castro</p>\n<p>//@website: www.yensdesign.com</p>\n<p>//@email: yensamg@gmail.com</p>\n<p>//@license: Feel free to use it, but keep this credits please!\n/***************************/</p>\n<hr />\n<p>For the backend, I used:</p>\n<p>SIMPLE PHP GUESTBOOK v1.0 by Pasi Havia (roomeo@yahoo.com)</p>\n<p>INSTALL NOTES</p>\n<p>1. Unzip guestbook.zip\n2. Transfer all unzipped files to your webserver\n3. Change guestbook.txt file attributes so that it is writable by public. For example 'chmod 646 guestbook.txt'.\n4. You are ready to use! Just make a link to readbook.php or to addbook.php from your webpage.</p>\n<p>This guestbook is distributed under GPL license.</p>\n<p>Pasi Havia, 2nd April 2003</p>\n<hr />\n",
      "date_published": "2014-11-24T22:59:00Z"
    },
    {
      "id": "/blog/2014/11/24/quick-frontend-for-diff-pdf-in-python/",
      "url": "/blog/2014/11/24/quick-frontend-for-diff-pdf-in-python/",
      "title": "Quick Frontend For Diff-pdf In Python",
      "content_html":"<p><a href=\"https://github.com/vslavik/diff-pdf/\">Diff-PDF (click here to go to the download page)</a> is a very useful command line tool for comparing pdfs. Only issue is that there is a lack of GUI frontend to use this. This is quite annoying for occasional usage of this program, especially for the average user.</p>\n<!--more-->\n<p>Thus for anybody who really really needs this feature quickly, here is a good stopgap measure for those in windows. For linux users, it shouldn't be too hard to modify.</p>\n<p>It is a python script that ask for two files via GUI and runs it in diff-pdf. To use it, just drop it in the same folder as the binaries, and execute the script.</p>\n<pre class=\"language-python\"><code class=\"language-python\"><span class=\"token comment\">#### GUI FRONTEND SCRIPT FOR DIFF-PDF (guiDiffPDF) ####</span>\n<span class=\"token comment\">## Author: Brian Khuu 2014 briankhuu.com</span>\n<span class=\"token comment\">## Description: This script will ask you for two files,</span>\n<span class=\"token comment\">##              and then open a visual mode diff.</span>\n<span class=\"token comment\">##              In other platform, just change diff-pdf.exe</span>\n<span class=\"token comment\">## Install: Place in same location as diff-pdf.exe</span>\n<span class=\"token comment\">##          Don't forget to put it in system path for handy access!</span>\n<span class=\"token comment\">## Tested: On windows 8 with python V3.1</span>\n<span class=\"token comment\">## Dependency: diff-pdf.exe @ https://github.com/vslavik/diff-pdf</span>\n<span class=\"token keyword\">import</span> tkinter<span class=\"token punctuation\">,</span> sys\n<span class=\"token keyword\">import</span> tkinter<span class=\"token punctuation\">.</span>filedialog <span class=\"token comment\">#https://mail.python.org/pipermail/python-list/2010-April/574512.html</span>\n\nprogramPath <span class=\"token operator\">=</span> <span class=\"token string\">\"diff-pdf.exe\"</span> <span class=\"token comment\">## FOR WINDOWS ONLY, MODIFY THIS IF IN... SAY LINUX</span>\n\n<span class=\"token comment\">## START GUI ##</span>\nroot <span class=\"token operator\">=</span> tkinter<span class=\"token punctuation\">.</span>Tk<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>         <span class=\"token comment\"># open and start tkinter object</span>\nroot<span class=\"token punctuation\">.</span>withdraw<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>             <span class=\"token comment\"># hide the root window</span>\n<span class=\"token comment\">## save sys.argv arguments (As file dialog changes it...) ##</span>\noptArgV <span class=\"token operator\">=</span> sys<span class=\"token punctuation\">.</span>argv<span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">:</span><span class=\"token punctuation\">]</span> <span class=\"token comment\"># optional ArgV.</span>\n\n<span class=\"token comment\">## ASK USER WHICH TWO FILES TO COMPARE ##</span>\nfilePath1 <span class=\"token operator\">=</span> tkinter<span class=\"token punctuation\">.</span>filedialog<span class=\"token punctuation\">.</span>askopenfilename<span class=\"token punctuation\">(</span>title<span class=\"token operator\">=</span><span class=\"token string\">\"Open First PDF - 1\"</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span> <span class=\"token punctuation\">(</span><span class=\"token string\">\"pdf1: \"</span><span class=\"token operator\">+</span>filePath1<span class=\"token operator\">+</span><span class=\"token string\">\"\\n\"</span><span class=\"token punctuation\">)</span>  <span class=\"token comment\">#Display first filepath</span>\nfilePath2 <span class=\"token operator\">=</span> tkinter<span class=\"token punctuation\">.</span>filedialog<span class=\"token punctuation\">.</span>askopenfilename<span class=\"token punctuation\">(</span>title<span class=\"token operator\">=</span><span class=\"token string\">\"Open Second PDF - 2\"</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span> <span class=\"token punctuation\">(</span><span class=\"token string\">\"pdf1: \"</span><span class=\"token operator\">+</span>filePath2<span class=\"token operator\">+</span><span class=\"token string\">\"\\n\"</span><span class=\"token punctuation\">)</span>  <span class=\"token comment\">#Display second filepath</span>\n\n<span class=\"token comment\">## Run the command line instruction ##</span>\n<span class=\"token keyword\">from</span> subprocess <span class=\"token keyword\">import</span> check_output\n<span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span> <span class=\"token builtin\">len</span><span class=\"token punctuation\">(</span>optArgV<span class=\"token punctuation\">)</span> <span class=\"token operator\">></span> <span class=\"token number\">0</span> <span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>   <span class=\"token comment\"># pass though argument to diff-pdf.exe</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span> <span class=\"token string\">\"ARGUMENTS: \"</span><span class=\"token operator\">+</span><span class=\"token string\">\" \"</span><span class=\"token punctuation\">.</span>join<span class=\"token punctuation\">(</span>optArgV<span class=\"token punctuation\">)</span><span class=\"token operator\">+</span><span class=\"token string\">\"\\n\"</span> <span class=\"token punctuation\">)</span>\n    command <span class=\"token operator\">=</span> programPath<span class=\"token operator\">+</span><span class=\"token string\">\" \"</span><span class=\"token operator\">+</span><span class=\"token string\">\" \"</span><span class=\"token punctuation\">.</span>join<span class=\"token punctuation\">(</span>optArgV<span class=\"token punctuation\">)</span><span class=\"token operator\">+</span><span class=\"token string\">\" \\\"\"</span><span class=\"token operator\">+</span>filePath1<span class=\"token operator\">+</span><span class=\"token string\">\"\\\" \\\"\"</span><span class=\"token operator\">+</span>filePath2<span class=\"token operator\">+</span><span class=\"token string\">\"\\\"\"</span>\n<span class=\"token keyword\">else</span><span class=\"token punctuation\">:</span>                       <span class=\"token comment\"># Otherwise default to visual diff</span>\n    command <span class=\"token operator\">=</span> programPath<span class=\"token operator\">+</span><span class=\"token string\">\" --view \\\"\"</span><span class=\"token operator\">+</span>filePath1<span class=\"token operator\">+</span><span class=\"token string\">\"\\\" \\\"\"</span><span class=\"token operator\">+</span>filePath2<span class=\"token operator\">+</span><span class=\"token string\">\"\\\"\"</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\">> \"</span><span class=\"token operator\">+</span>command<span class=\"token operator\">+</span><span class=\"token string\">\"\\n\"</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span> check_output<span class=\"token punctuation\">(</span> command <span class=\"token punctuation\">,</span> shell<span class=\"token operator\">=</span><span class=\"token boolean\">True</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">)</span>\n\n<span class=\"token builtin\">input</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Press Enter to continue...\"</span><span class=\"token punctuation\">)</span></code></pre>\n<p>Posted the solution also to https://github.com/vslavik/diff-pdf/issues/14</p>\n",
      "date_published": "2014-11-24T22:48:00Z"
    },
    {
      "id": "/blog/2014/11/24/now-using-jekyll/",
      "url": "/blog/2014/11/24/now-using-jekyll/",
      "title": "Now Using Jekyll",
      "content_html":"<p>It has been a while since this website has been updated. Previously I written custom PHP files to iterate over my blog post and display it using markdown to html converter (ParseDown). Maintaining it has become a hassle however, and thus I'm converting the site into Jekyll which is a static site generator (and thus no PHP needed). Of which the biggest advantage for me, is that the output is in simple HTML. Thus it is much more secure than coding a dynamic site to avoid holes that allows for malicious code to enter.</p>\n<!--more-->\n<p>It will take some time to get used to, as well as setting the whole system up.</p>\n<p>These are the two links I used to understand how to install jekyll in windows. Unfortunately, it is not as easy to setup in windows compared to linux. This is since you also need to install the windows ruby devkit installer as well standard ruby.</p>\n<p>In addition you need to install rogue <code>gem install rouge</code> before inserting <code>highlighter: rouge</code> in <code>_config.yml</code></p>\n<ul>\n<li>http://rubyinstaller.org/add-ons/devkit/</li>\n<li>https://github.com/dmathieu/glynn</li>\n<li>http://jekyll-windows.juthilo.com/3-syntax-highlighting/</li>\n</ul>\n<p>Let me know if you need a step by step script. But the links above should be good enough.</p>\n<p>Also, am using a modified version of the rakefiles below here. Very useful stuff:</p>\n<ul>\n<li>http://stenehall.se/article/write-using-ruby-and-rake---jekyll-again/</li>\n</ul>\n<p>Btw here is what my config looks like, hopefully this helps:</p>\n<p># Site settings\ntitle: Brian Khuu\nemail: mofosyne@gmail.com\ndescription: &gt; # this means to ignore newlines until &quot;baseurl:&quot;\nMy name is Brian, I like coding, pixel arts, and electronics!\nbaseurl: &quot;&quot; # the subpath of your site, e.g. /blog/\nurl: &quot;http://briankhuu.com&quot; # the base hostname &amp; protocol for your site\ntwitter_username: mofosyne\ngithub_username:  mofosyne\nreddit_username:  mofosyne</p>\n<p># Build settings\nhighlighter: rouge\npermalink: /blog/:categories/:year/:month/:day/:title.html\nmarkdown: redcarpet</p>\n<p>By default kramdown is chosen. But since I'm used to github style markdown, I chose to use redcarpet instead (which is also natively supported, so use that too!). Also rouge syntax highlighter is chosen, since the default setting doesn't work for windows.</p>\n<p>(Just rememeber to install it via <code>gem install rouge</code> )</p>\n",
      "date_published": "2014-11-24T22:22:00Z"
    },
    {
      "id": "/blog/2014/11/24/change-date-temporarily/",
      "url": "/blog/2014/11/24/change-date-temporarily/",
      "title": "Change Date Temporarily",
      "content_html":"<p>Sometimes you just gotta switch the date to an older time because a program checks for that. Well maybe this might be handy for you, if you are a windows 7 user:</p>\n<p>Just copy the below code and name the file as <code>tempdateset.bat</code>. So when you click on it, you have a 10 sec window to activate the program and let it check the date before launching whatever program it is. Cheers.</p>\n<pre><code>@ECHO off\nECHO Temporary Date setter\nECHO Designed for windows 7. Run this as admin. \n\nset BEFOREDATE=%date:~4,10%\ndate 01-03-07\n\nECHO Now manually launch whatever you need before we revert back to the correct time.\n\nTIMEOUT 10\ndate %BEFOREDATE%\nECHO Date reverted\nTIMEOUT 5\n</code></pre>\n<!--more-->\n<p>Hoped it was helpful! Let me know if it works or doesn't work.</p>\n",
      "date_published": "2014-11-24T00:00:00Z"
    },
    {
      "id": "/blog/2014/06/30/More_Exploration_Of_The_TL-WR703N/",
      "url": "/blog/2014/06/30/More_Exploration_Of_The_TL-WR703N/",
      "title": "More Exploration Of The TL-WR703N",
      "content_html":"<p>This is a continuation of the experiment with  TL-WR703n (Starting from the The_TL-WR703N_piratebox_exploration post)  http://wiki.openwrt.org/toh/tp-link/tl-wr703n</p>\n<p>![Image of the PCB][pcb]</p>\n<p>Just remembered I got Tera Terminal, and if I remember, it should support ymodem</p>\n<p>Previously tried TFTP method:</p>\n<p>hornet&gt; tftpboot 0x81000000 openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin\nhornet&gt; erase 0x9f020000 +0x3c0000\nhornet&gt; cp.b 0x81000000 0x9f020000 0x3c0000\nhornet&gt; bootm 9f020000</p>\n<p>Now crafting up a process in Uboot after <code>tpl</code> at the &quot;autoboot at 1 sec&quot; or something</p>\n<p>hornet&gt; erase 0x9f020000 +0x3c0000\nhornet&gt; loadb 0x81000000\n#\n# OVER HERE WE SEND VIA KERMIT\n#\nhornet&gt; cp.b 0x81000000 0x9f020000 0x3c0000\nhornet&gt; bootm 9f020000</p>\n<p>My interpretation of above</p>\n<p>hornet&gt; erase from 0x9f020000 to +0x3c0000\nhornet&gt; loadb prepare to load to ram using kermit starting from 0x81000000\n#\n# OVER HERE WE SEND VIA KERMIT\n#\nhornet&gt; cp.b copy from ram startng at 0x81000000 to flash mem position 0x9f020000 to 0x3c0000\nhornet&gt; bootm start booting at 9f020000</p>\n<p>Sooo in the bit inbetween for Kermit serial modem (According to http://wiki.openwrt.org/doc/howto/generic.flashing.serial ) once all is setup, in tera term, go to file&gt;Transfer&gt;Kermit&gt;Send and send openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin</p>\n<p>dammit... no kermit mode?</p>\n<h3>Well... lets try a different laptop (older XP)</h3>\n<p>Previously i used a usb to ethernet adaptor on windows 8, but that was bunk.\nWhat ended up working, was to do the same process of using tftp on an older laptop with windows XP (possibly because it has a crappier protection system)\nWell that was interesting... At least I am back to square 1 rather than -1 or 1/0</p>\n<p>So lesson. Choose a laptop with embedded ethernet (or pick a good ethernet to usb adaptor). Or alternatively, learn linux lol. Or choose a board with a less stripped down uboot (or even better, with onboard web failsafe)</p>\n<h3>Sooo now to install piratebox again</h3>\n<p>yea ya I know it was annoying to recover from this error, but I did get it back to normal.</p>\n<p>So I followed the previous attempt I did, of installing generic openwrt firmware, then the usb driver to mount the usb, before following the piratebox instruction more carefully.</p>\n<p>Btw this method of installing usb support on generic unmodified openwrt firmware is recommeneded in  http://daviddarts.com/piratebox-diy-openwrt/ . (But is rather outdated)</p>\n<p>opkg update\nopkg install kmod-usb-uhci\ninsmod usbcore ## may return: file exists\ninsmod uhci\nopkg install kmod-usb-ohci ## may return: up to date.\ninsmod usb-ohci</p>\n<p>As usual the piratebox image installed now, but somehow doesn't run. Bah.</p>\n<p>Just found https://github.com/pepe2k/u-boot_mod &amp; https://forum.openwrt.org/viewtopic.php?id=43237 it has web based failsafe, this is definitely needed by me to avoid having to go though tftp again.</p>\n<p>root@OpenWrt:/# cat /proc/mtd\ndev:    size   erasesize  name\nmtd0: 00020000 00010000 &quot;u-boot&quot;\nmtd1: 000ecf04 00010000 &quot;kernel&quot;\nmtd2: 002e30fc 00010000 &quot;rootfs&quot;\nmtd3: 000e0000 00010000 &quot;rootfs_data&quot;\nmtd4: 00010000 00010000 &quot;art&quot;\nmtd5: 003d0000 00010000 &quot;firmware&quot;\nroot@OpenWrt:/#</p>\n<p>So the uboot partition is at 0x20000 (128 KiB) and has size of 0x1000(64 KiB).</p>\n<p>Soo lets craft a command to insert the modified firmware:</p>\n<p>hornet&gt; tftpboot 0x81000000 uboot_for_tl-wr703n.bin\nhornet&gt; erase 0x9F000000 +0x10000\nhornet&gt; cp.b 0x81000000 0x9F000000 0x10000\nhornet&gt; #bootm 9f020000</p>\n<p>Check flash memory before rebooting</p>\n<p>hornet&gt; md 0x9F000000 #check flash\nhornet&gt; md 0x81000000 #check memory we copied from\\</p>\n<p>After that <code>reboot</code> and hope it all goes well. Well the answer is that it did. Now it's harder to brick :D . And I have given up on running piratebox on this dammn thing. Ah well, at least until I understand embedded linux more.</p>\n<p>So anyhow to access the web failsafe in this modified firmware, just go to the Uboot console, and then type 'httpd'. It will then specify the IP address you have to connect to. Just connect to it at port 80, and you can take over from there :D (might need to set a static address e.g. 192.168.1.100 )</p>\n<p>Well for my use, here is what you run after installing a generic image to get at least usb and internet running for opkg etc... (http://wiki.openwrt.org/doc/uci) :</p>\n<p># Connect the ethernet to the internet first!\n# /etc/config/network modification to connect to dhcp\n# 'uci show network' will show what values can be changed\nuci set network.lan.proto=dhcp\nuci commit\n/etc/init.d/network reload\n# Install latest squashfs-sysupgrade.bin\n# This updates BusyBox v1.19.4 &amp; OpenWrt ATTITUDE ADJUSTMENT (12.09, r36088)\n# to BusyBox v1.22.1 &amp;  BARRIER BREAKER (Bleeding Edge, r41391)\ncd /tmp\nwget http://downloads.openwrt.org/snapshots/trunk/ar71xx/openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-sysupgrade.bin\nsysupgrade openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-sysupgrade.bin\nreboot\n# Install usb support\nopkg update\nopkg install kmod-usb-storage block-mount block-hotplug kmod-fs-ext4 kmod-fs-vfat kmod-nls-cp437 kmod-nls-iso8859-1\nmkdir -p /mnt/usb\nmount -t vfat /dev/sda1 /mnt/usb\n#\n#src luci http://downloads.openwrt.org/kamikaze/8.09.2/ar71xx/packages/\nopkg update\nopkg install luci</p>\n<p>So now that would be my base system! Oh.... and I had to remove usb support if I wanted luci, 4 megs is not alot (remove all packages via 'firstboot' command).</p>\n<p>So whats my IP? http://www.cyberciti.biz/faq/how-to-find-out-the-ip-address-assigned-to-eth0-and-display-ip-only/</p>\n<p>root@OpenWrt:/# /sbin/ifconfig\nbr-lan    Link encap:Ethernet  HWaddr EC:17:2F:F0:7A:B4\ninet addr:192.168.0.9  Bcast:192.168.0.255  Mask:255.255.255.0\ninet6 addr: fe80::ee17:2fff:fef0:7ab4/64 Scope:Link\ninet6 addr: fd78:a0fe:50cd::1/60 Scope:Global\nUP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1\nRX packets:685 errors:0 dropped:0 overruns:0 frame:0\nTX packets:119 errors:0 dropped:0 overruns:0 carrier:0\ncollisions:0 txqueuelen:0\nRX bytes:77032 (75.2 KiB)  TX bytes:12528 (12.2 KiB)</p>\n<p>eth0      Link encap:Ethernet  HWaddr EC:17:2F:F0:7A:B4\nUP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1\nRX packets:4658 errors:0 dropped:0 overruns:0 frame:0\nTX packets:470 errors:0 dropped:0 overruns:0 carrier:0\ncollisions:0 txqueuelen:1000\nRX bytes:550387 (537.4 KiB)  TX bytes:44507 (43.4 KiB)\nInterrupt:4\n... etc...</p>\n<p>Well, its... hard to tell. So I went to /etc/config/network and remove the 'type' bridge line. However even then luci didn't load. so thats when I realized that the daemon for uhttpd is not on. http://wiki.openwrt.org/doc/howto/luci.essentials</p>\n<p>These two commands took care of the rest.</p>\n<p>/etc/init.d/uhttpd start # Start uhttpd that holds luci\n/etc/init.d/uhttpd enable # Enable start on every reboot</p>\n<p>Now the system works</p>\n<p>User: root\npassword: password\nYea... very secure lol</p>\n<p>So now that I got a pretty general router... I've no idea what I'm suppose to do with it now that I won't install piratebox on it. Plus with luci, there is not a lot of flash memory to play with, so any future project will still need to done via CMD (or having an external flash drive). Sooo yea, it has luci GUI, and could potentially act as a remote serial access terminal over wifi, so that's cool but I think that's enough for me today. All this note will be of assistance to any of you guys who are still new to this, and may need some ideas on how to get started. (Plus is a good reference for me later on!)</p>\n<p>Cheers.</p>\n<p>(LUCI GUI) Status\nSystem\nHostname\tOpenWrt\nModel\tTP-LINK TL-WR703N v1\nFirmware Version\t OpenWrt Barrier Breaker r41391 / LuCI Trunk (svn-r10375)\nKernel Version\t3.10.44\nLocal Time\tMon Jun 30 11:08:42 2014\nUptime\t0h 30m 49s\nLoad Average\t0.09, 0.18, 0.12\nMemory\nTotal Available\t\n16260 kB / 28844 kB (56%)\nFree\t\n7952 kB / 28844 kB (27%)\nCached\t\n6716 kB / 28844 kB (23%)\nBuffered\t\n1592 kB / 28844 kB (5%)\nNetwork\nIPv4 WAN Status\t\neth0\tType: dhcp\nAddress: 192.168.0.9\nNetmask: 255.255.255.0\nGateway: 192.168.0.1\nDNS 1: 192.168.0.1\nConnected: 0h 8m 31s</p>\n<hr />\n<p>Just extra notes for myself:</p>\n<p>According to http://blackfin.uclinux.org/doku.php?id=bootloaders:u-boot:serial_port_loading_files</p>\n<p># Loading with the kermit protocol\nbfin&gt; loadb [load address] [baud rate]</p>\n<p># Loading with the y-modem protocol\nbfin&gt; loady [load address] [baud rate]</p>\n<p>According to http://eduunix.ccut.edu.cn/index2/html/linux/O'Reilly%20-%20Building%20Embedded%20Linux%20Systems/belinuxsys-CHP-9-SECT-5.html</p>\n<p>askenv  - get environment variables from stdin\nautoscr - run script from memory\nbase    - print or set address offset\nbdinfo  - print Board Info structure\nbootm   - boot application image from memory\nbootp   - boot image via network using BootP/TFTP protocol\nbootd   - boot default, i.e., run 'bootcmd'\ncmp     - memory compare\nconinfo - print console devices and informations\ncp      - memory copy\ncrc32   - checksum calculation\ndate    - get/set/reset date &amp; time\ndhcp    - invoke DHCP client to obtain IP/boot params\ndiskboot- boot from IDE device\necho    - echo args to console\nerase   - erase FLASH memory\nflinfo  - print FLASH memory information\ngo      - start application at address 'addr'\nhelp    - print online help\nide     - IDE sub-system\niminfo  - print header information for application image\nloadb   - load binary file over serial line (kermit mode)\nloads   - load S-Record file over serial line\nloop    - infinite loop on address range\nmd      - memory display\nmm      - memory modify (auto-incrementing)\nmtest   - simple RAM test\nmw      - memory write (fill)\nnm      - memory modify (constant address)\nprintenv- print environment variables\nprotect - enable or disable FLASH write protection\nrarpboot- boot image via network using RARP/TFTP protocol\nreset   - Perform RESET of the CPU\nrun     - run commands in an environment variable\nsaveenv - save environment variables to persistent storage\nsetenv  - set environment variables\nsleep   - delay execution for some time\ntftpboot- boot image via network using TFTP protocol\nand env variables ipaddr and serverip\nversion - print monitor version\n?       - alias for 'help'</p>\n<hr />\n<p>Links to note</p>\n<p>http://code.kliu.org/hashcheck/ - hash check from explorer, sounds useful</p>\n<p>http://code.kliu.org/cmdopen/ - &quot;Open Command Prompt&quot; menu item to the context menus (right-click menus) in Windows Explorer... Very useful!</p>\n<p>[pcb]: data:image/jpg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/4QJMRXhpZgAATU0AKgAAAAgABwEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAOAAAAcgITAAMAAAABAAEAAIdpAAQAAAABAAAAgIglAAQAAAABAAABXAAAAAAAAABIAAAAAQAAAEgAAAABcGFpbnQubmV0IDQuMAAAC4gnAAMAAAABAfwAAJAAAAcAAAAEMDIyMJADAAIAAAAUAAABCpAEAAIAAAAUAAABHpEBAAcAAAAEAQIDAJIKAAUAAAABAAABMqAAAAcAAAAEMDEwMKABAAMAAAABAAEAAKACAAQAAAABAAAHoKADAAQAAAABAAAMwKAFAAQAAAABAAABOgAAAAAyMDE0OjA2OjMwIDIxOjM0OjIzADIwMTQ6MDY6MzAgMjE6MzQ6MjMAAAABcQAAAGQAAgABAAIAAAAEUjk4AAACAAcAAAAEMDEwMAAAAAAAAAAAAAoAAAACAAAABgAAAdoAAQACAAAAAlMAAAAAAgAFAAAAAwAAAeAAAwACAAAAAkUAAAAABAAFAAAAAwAAAfgABQABAAAAAQAAAAAABgAFAAAAAQAAAhAABwAFAAAAAwAAAhgAEgACAAAABwAAAjAAHQACAAAACwAAAjgAAAAAMiwyLDAAAAAAJQAAAAEAAAAvAAAAAQAAWH4AAAPoAAAAkAAAAAEAAAAyAAAAAQAAXCAAAAPoAABr0AAAA+gAAAALAAAAAQAAACIAAAABAAAAFgAAAAFXR1MtODQAADIwMTQ6MDY6MzAAAP/bAEMALyAjKSMdLykmKTUyLzhHdkxHQUFHkGdtVXarlrOwqJalorzU/+W8yP/LoqXr/+7///////+24v/////////////bAEMBMjU1Rz5HikxMiv/CpcL////////////////////////////////////////////////////////////////////AABEIAK4AyAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdo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</p>\n",
      "date_published": "2014-06-30T11:10:50Z"
    },
    {
      "id": "/blog/2014/06/28/parsedownRender_V2/",
      "url": "/blog/2014/06/28/parsedownRender_V2/",
      "title": "Parsedown Render V2",
      "content_html":"<p>Here is version two of the parsedown based general .md file viewer</p>\n<p>This time I added support for Math Jax, which will make it easier for me to post documents marked in LaTeX and ASCIIMaths. Which is very useful! Especially for future collaboration or documentation efforts.</p>\n<!--more-->\n<pre class=\"language-php\"><code class=\"language-php\"><span class=\"token php language-php\"><span class=\"token delimiter important\">&lt;?php</span>\n<span class=\"token comment\">/*\nProject: parsedown Render\nCoder: Brian Khuu briankhuu.com\nVERSION: v2.0 (MathJax and raw view support now)\nPurpose: To allow for displaying of .md file transparently to visitors via http://parsedown.org and mod_rewrite\nUsage: Place this file (parsedownRender.php) in your root directory and add these lines below to your .htaccess file\n\t\t&lt;IfModule mod_rewrite.c>\n\t\tRewriteEngine On\n\t\tRewriteCond %{REQUEST_URI} ^(.*)\\.md [NC]\n\t\tRewriteRule . /parsedownRender.php?file=%{REQUEST_URI}&amp;%{QUERY_STRING} [L]\n\t\t&lt;/IfModule>\n\t*/</span>\n<span class=\"token variable\">$file</span> <span class=\"token operator\">=</span> <span class=\"token string double-quoted-string\">\"./\"</span><span class=\"token operator\">.</span><span class=\"token variable\">$_GET</span><span class=\"token punctuation\">[</span><span class=\"token string double-quoted-string\">\"file\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// 'file' => /md/test.md</span>\n<span class=\"token variable\">$css</span> <span class=\"token operator\">=</span> <span class=\"token keyword\">isset</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$_GET</span><span class=\"token punctuation\">[</span><span class=\"token string single-quoted-string\">'css'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">?</span> <span class=\"token function\">htmlspecialchars</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$_GET</span><span class=\"token punctuation\">[</span><span class=\"token string single-quoted-string\">'css'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">:</span> <span class=\"token string double-quoted-string\">\"http://kevinburke.bitbucket.org/markdowncss/markdown.css\"</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$viewMode</span> <span class=\"token operator\">=</span> <span class=\"token keyword\">isset</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$_GET</span><span class=\"token punctuation\">[</span><span class=\"token string single-quoted-string\">'view'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">?</span> <span class=\"token function\">htmlspecialchars</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$_GET</span><span class=\"token punctuation\">[</span><span class=\"token string single-quoted-string\">'view'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">:</span> <span class=\"token string double-quoted-string\">\"\"</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span> <span class=\"token variable\">$viewMode</span> <span class=\"token operator\">==</span> <span class=\"token string double-quoted-string\">\"raw\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span> <span class=\"token keyword\">echo</span> <span class=\"token function\">file_get_contents</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$file</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token keyword\">exit</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token punctuation\">}</span>\n<span class=\"token keyword\">function</span> <span class=\"token function-definition function\">parsedownInclude</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$f</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n\t<span class=\"token keyword\">require_once</span> <span class=\"token string single-quoted-string\">'Parsedown.php'</span><span class=\"token punctuation\">;</span>\n\t<span class=\"token variable\">$Parsedown</span> <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Parsedown</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t<span class=\"token keyword\">echo</span> <span class=\"token function\">is_readable</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$f</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">?</span> <span class=\"token variable\">$Parsedown</span><span class=\"token operator\">-></span><span class=\"token function\">text</span><span class=\"token punctuation\">(</span><span class=\"token function\">file_get_contents</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$f</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">:</span> <span class=\"token string double-quoted-string\">\"File Not Found: \"</span><span class=\"token operator\">.</span><span class=\"token function\">htmlspecialchars</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$f</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n<span class=\"token delimiter important\">?></span></span>\n<span class=\"token doctype\"><span class=\"token punctuation\">&lt;!</span><span class=\"token doctype-tag\">DOCTYPE</span> <span class=\"token name\">html</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>head</span><span class=\"token punctuation\">></span></span>\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>link</span> <span class=\"token attr-name\">rel</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>stylesheet<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">type</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>text/css<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">href</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span><span class=\"token php language-php\"><span class=\"token delimiter important\">&lt;?php</span> <span class=\"token keyword\">echo</span> <span class=\"token variable\">$css</span> <span class=\"token delimiter important\">?></span></span><span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">type</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>text/javascript<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">src</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-MML-AM_HTMLorMML<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token script\"></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>head</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>body</span><span class=\"token punctuation\">></span></span>\n<span class=\"token php language-php\"><span class=\"token delimiter important\">&lt;?php</span> <span class=\"token function\">parsedownInclude</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$file</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token keyword\">echo</span> <span class=\"token string double-quoted-string\">\"&lt;hr>&lt;a href='?view=raw'>VIEW RAW&lt;/a>\"</span><span class=\"token punctuation\">;</span> <span class=\"token delimiter important\">?></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>body</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>html</span><span class=\"token punctuation\">></span></span></code></pre>\n",
      "date_published": "2014-06-28T16:22:51Z"
    },
    {
      "id": "/blog/2014/06/28/MathJax_support_for_ASCIIMath_and_Tex/",
      "url": "/blog/2014/06/28/MathJax_support_for_ASCIIMath_and_Tex/",
      "title": "MathJax support for ASCIIMath and Tex",
      "content_html":"<p>Testing mathjax rendering support for this page. This is the code inserted on the top of each page.</p>\n<p><script type=\"text/javascript\" src=\"http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-MML-AM_HTMLorMML\">\n</script></p>\n<!--more-->\n<p>I decided on using mathjax cdn since it is likely to be precached by the cdn in multiple websites, meaning faster load time. Plus it means MathJax will always be up to date. I also decided to choose both ASCIIMath and Tex/LaTeX support since both have suitable use case (One for quick and dirty notation, and the other for clean mathamatical notations).</p>\n<p>The settings I chose according to MathJax\nTeX-MML-AM_HTMLorMML.js\nAllows math to be specified in TeX, LaTeX, MathML, or AsciiMath notation, with the AMSmath and AMSsymbols packages included, producing output using MathML if the browser supports it sufficiently, and HTML-with-CSS otherwise.</p>\n<p>Here is some test Math Jax stuff</p>\n<p>Inline math/tex:</p>\n<script type=\"math/tex\">x+\\sqrt{1-x^2}</script>\n<p><script type=\"math/tex\">x+\\sqrt{1-x^2}</script></p>\n<p>Displayed math/tex:</p>\n<script type=\"math/tex; mode=display\">\n  \\sum_{n=1}^\\infty {1\\over n^2} = {\\pi^2\\over 6}\n</script>\n<p><script type=\"math/tex; mode=display\">\n\\sum_{n=1}^\\infty {1\\over n^2} = {\\pi^2\\over 6}\n</script></p>\n<p>Inline math/asciimath:</p>\n<script type=\"math/asciimath\"> x^2 /7 </script>\n<p><script type=\"math/asciimath\"> x^2 /7 </script></p>\n<p>Displayed math/asciimath:</p>\n<script type=\"math/tex; mode=display\">\n   x^2 /7\n</script>\n<h3>Hmmm...!!!</h3>\n<p>Looks like I was mistaken, you are not forced to use the unwieldy html tags to declare if a text should be considered math or not.</p>\n<p>In http://docs.mathjax.org/en/latest/tex.html read under the heading &quot;TeX and LaTeX math delimiters&quot;. For Tex and LaTeX, the delimiters are</p>\n<p>LaTeX Inline Mode:</p>\n<p>\\(...\\)</p>\n<p>LaTeX Display Mode:</p>\n<p>\\[...\\]</p>\n<p>TeX Mode(unverified, may need &quot;&quot;):</p>\n<p>$$...$$</p>\n<p>ASCIIMath Mode (Note: Backtick located next to &quot;1&quot; or &quot;!&quot; key:</p>\n<p>`...`</p>\n<p>LaTeX Inline Mode:\n\\(...\\)\nLaTeX Display Mode:\n\\[...\\]\nTeX Mode(unverified, may need &quot;&quot;):\n$$...$$\nASCIIMath Mode (Note: Backtick located next to &quot;1&quot; or &quot;!&quot; key:\n`...`</p>\n<p>Note: For some reason, the Math Jax document specifies (...) &amp; [...]\nbut that does not work for me... document needs updating?\nP.s. (&quot;&quot; is needed if running mathjaxs after markdown parser, since there is special significance to &quot;`&quot; and &quot;&quot;</p>\n<p>Oh and btw if you type &quot;_&quot; in math mode, youw will actually need to escape it too, like below\ne.g. &quot;</p>\n<p>\\( \\Gamma g_{th} = \\alpha_i + \\frac{1}{2L} ln[\\frac{1}{R_1 R_2}] \\)</p>\n<p>As a signoff, here is a random equation (see if you can recognize it :p )</p>\n<p>\\( \\Gamma g_{th} = \\alpha_i + \\frac{1}{2L} ln[\\frac{1}{R_1 R_2}] \\)</p>\n<p>$$ a=b $$</p>\n<p>`x^2 /7`</p>\n<p>p.s. I think I know why &quot;&quot; needs to be added in most cases. It's because the markdown parser treats &quot;&quot; and ` as special characters, and thus needs to be escaped.</p>\n",
      "date_published": "2014-06-28T14:24:23Z"
    },
    {
      "id": "/blog/2014/06/28/The_TL-WR703N_piratebox_exploration/",
      "url": "/blog/2014/06/28/The_TL-WR703N_piratebox_exploration/",
      "title": "The TL-WR703N piratebox exploration",
      "content_html":"<p>Today, just trying again at configuring a pirate box in TL-WR703N. A while ago, I got it working for a while, but then the Sandisk 16gig somehow ended up dying. Haven't touched it since. Now just trying to see what can be done with it, and if I can reinstall it (on a 4gig flash drive, Sandisk nonetheless)</p>\n<p>Serial: 11520 baud</p>\n<p>Useful to note that if you stuff things up in OpenWrt for TL-WR703N that you can revert the damage via typing\nopenwrt reset -r mtd -r erase rootfs_data</p>\n<p>Also soldered into TL-WR703N, is a stereo plug that is acting as a cheap way to implement a TTL logic level UART port for interfacing with the board's linux console terminal over serial (via Putty).</p>\n<p>TRS Plug (What I chose, based on most common configuration I seen online)\n(Remember that Tx-&gt;Rx and Rx-&gt;Tx)</p>\n<p>PLUG SIDE (To USB to serial converter\nTIP , RING , SLEEVE\nTxd , Rxd  , Ground</p>\n<p>PORTSIDE (wired to board UART)\nTIP , RING , SLEEVE\nRxd , Txd  , Ground</p>\n<p>Having bit of difficulty in getting the usb to mount, possibly due to the need to install usb mounting package. But to install packages, I need an internet connection :/ . Well my router has DHCP, so we can go from there (Static IPs are bloody annoying).</p>\n<h3>Configuring /etc/config/network (via vi)</h3>\n<p>Notice specifically that I switched the option for 'proto' to 'dhcp'</p>\n<p>root@OpenWrt:/etc# cat /etc/config/network\nconfig interface 'loopback'\noption ifname 'lo'\noption proto 'static'\noption ipaddr '127.0.0.1'\noption netmask '255.0.0.0'</p>\n<p>config interface 'lan'\noption ifname 'eth0'\noption type 'bridge'\noption proto 'dhcp'\noption ipaddr '192.168.1.1'\noption netmask '255.255.255.0'</p>\n<h3>Working out how to reset the network daemon</h3>\n<p>root@OpenWrt:/etc# /etc/init.d/\nboot       dnsmasq    firewall   rcS        telnet     usb\ncron       done       led        sysctl     ubus       watchdog\ndefconfig  dropbear   network    sysntpd    umount\nroot@OpenWrt:/etc# /etc/init.d/network\nSyntax: /etc/init.d/network [command]</p>\n<p>Available commands:\nstart   Start the service\nstop    Stop the service\nrestart Restart the service\nreload  Reload configuration files (or restart if that fails)\nenable  Enable service autostart\ndisable Disable service autostart</p>\n<p>root@OpenWrt:/etc# /etc/init.d/network reload\n[ 4768.420000] br-lan: port 1(eth0) entered disabled state\n[ 4768.450000] device eth0 left promiscuous mode\n[ 4768.450000] br-lan: port 1(eth0) entered disabled state\n[ 4768.450000] eth0: link down\n[ 4768.480000] device eth0 entered promiscuous mode\n'radio0' is disabled\n[ 4769.250000] eth0: link up (100Mbps/Full duplex)\n[ 4769.250000] br-lan: port 1(eth0) entered forwarding state\n[ 4769.250000] br-lan: port 1(eth0) entered forwarding state\n'radio0' is disabled\n'radio0' is disabled\nroot@OpenWrt:/etc# [ 4771.250000] br-lan: port 1(eth0) entered forwarding state</p>\n<h3>Yay! Internet access!</h3>\n<p>TIP: Control z will quit any program you are running at the moment in command line.</p>\n<p>root@OpenWrt:/etc# ping google.com\nPING google.com (74.125.237.96): 56 data bytes\n64 bytes from 74.125.237.96: seq=0 ttl=55 time=27.968 ms\n64 bytes from 74.125.237.96: seq=1 ttl=56 time=31.212 ms\n64 bytes from 74.125.237.96: seq=2 ttl=56 time=30.802 ms\n^Z[3]+  Stopped                    ping google.com\nroot@OpenWrt:/etc#</p>\n<h3>On upgrading OpenWrt (and the need for usb driver)</h3>\n<p>I already installed OpenWrt, and based on <a href=\"http://wiki.openwrt.org/toh/tp-link/tl-wr703n#flashing\">tl-wr703n#flashing</a> page in openwrt wiki, you need to flash a factory and then a sysupgrade. I was pretty confused on the difference between the two until stitch626 in https://forum.openwrt.org/viewtopic.php?id=34572 pointed this out from the FAQ.</p>\n<p>What is the difference between the different image formats?\na factory image is one built for the bootloader flasher or stock software flasher\na sysupgrade image (previously named trx image) is designed to be flashed from within openwrt itself</p>\n<p>What this means, is that I have already installed the 'factory' replacement image, my best guess is that it holds the openwrt fail safes etc... think of it as the 'openwrt BIOS'.</p>\n<p>Which means, what I really should be doing, is updating the sysupgrade image of the system.</p>\n<p>cd /tmp\nwget http://downloads.openwrt.org/snapshots/trunk/ar71xx/openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-sysupgrade.bin\nsysupgrade openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-sysupgrade.bin\nreboot</p>\n<p>hmmm... It seems that a fresh install of openwrt does not include usb support (needed to install piratebox install script in usb drive). Looking at http://en.code-bude.net/2013/02/16/how-to-increase-storage-on-tp-link-wr703n-with-extroot/\nTrying 'ls /dev/sd*` shows no directory or file, indicating no flash drive mounted.</p>\n<p>#Update package list\nopkg update\n#Install USB storage support\nopkg install kmod-usb-storage</p>\n<p>in http://wiki.openwrt.org/doc/howto/usb.storage</p>\n<p>opkg update\nopkg install kmod-usb-storage block-mount block-hotplug kmod-fs-ext4 kmod-fs-vfat kmod-nls-cp437 kmod-nls-iso8859-1\nmkdir -p /mnt/usb\nmount -t vfat /dev/sda1 /mnt/usb</p>\n<p>Don't forget to type <code>reboot</code> after installing usb support, otherwise you gonna go crazy. ( <code>opkg install kmod-scsi-generic</code> may also be required... not sure)</p>\n<h3>bricked!</h3>\n<p>Somehow after following the pirate box instruction, I got it stuck in a autoreset loop during the install process. http://piratebox.cc/openwrt:diy\n(edit: Okay, so I am an idiot, I forgot one critical instruction to place a modified “*squashfs-factory.bin” on the root directory of the flash drive)</p>\n<p>U-Boot 1.1.4 (Feb 28 2012 - 11:58:24)</p>\n<p>AP121 (ar9330) U-boot</p>\n<p>DRAM:  32 MB\nled turning on for 1s...\nid read 0x100000ff\nflash size 4194304, sector count = 64\nFlash:  4 MB\nUsing default environment</p>\n<p>In:    serial\nOut:   serial\nErr:   serial\nNet:   ag7240_enet_initialize...\nNo valid address in Flash. Using fixed address\nNo valid address in Flash. Using fixed address\n: cfg1 0x5 cfg2 0x7114\neth0: 00:03:7f:09:0b:ad\nag7240_phy_setup\neth0 up\n: cfg1 0xf cfg2 0x7214\neth1: 00:03:7f:09:0b:ad\nathrs26_reg_init_lan\nATHRS26: resetting s26\nATHRS26: s26 reset done\nag7240_phy_setup\neth1 up\neth0, eth1\nAutobooting in 1 seconds\n## Booting image at 9f020000 ...\nUncompressing Kernel Image ... Too big uncompressed streamLZMA ERROR 1 - must RESET</p>\n<p>Typed <code>tpl</code> very quickly after <code>Autobooting in 1 seconds</code> is shown, getting me into some sort of failsafe of failsafes. (I suspect it is a CFE (Common Firmware Environment) command line http://wiki.openwrt.org/doc/techref/bootloader/cfe )</p>\n<p>U-Boot 1.1.4 (Feb 28 2012 - 11:58:24)</p>\n<p>AP121 (ar9330) U-boot</p>\n<p>DRAM:  32 MB\nled turning on for 1s...\nid read 0x100000ff\nflash size 4194304, sector count = 64\nFlash:  4 MB\nUsing default environment</p>\n<p>In:    serial\nOut:   serial\nErr:   serial\nNet:   ag7240_enet_initialize...\nNo valid address in Flash. Using fixed address\nNo valid address in Flash. Using fixed address\n: cfg1 0x5 cfg2 0x7114\neth0: 00:03:7f:09:0b:ad\nag7240_phy_setup\neth0 up\n: cfg1 0xf cfg2 0x7214\neth1: 00:03:7f:09:0b:ad\nathrs26_reg_init_lan\nATHRS26: resetting s26\nATHRS26: s26 reset done\nag7240_phy_setup\neth1 up\neth0, eth1\nAutobooting in 1 seconds\nhornet&gt; help\n?       - alias for 'help'\nbootm   - boot application image from memory\ncp      - memory copy\nerase   - erase FLASH memory\nhelp    - print online help\nmd      - memory display\nmm      - memory modify (auto-incrementing)\nmtest   - simple RAM test\nmw      - memory write (fill)\nnm      - memory modify (constant address)\nprintenv- print environment variables\nprogmac - Set ethernet MAC addresses\nreset   - Perform RESET of the CPU\nsetenv  - set environment variables\ntftpboot- boot image via network using TFTP protocol\nversion - print monitor version</p>\n<p>After getting <a href=\"http://tftpd32.jounin.net/\">an TFTP client</a> and following http://forums.openpilot.org/blog/52/entry-92-unbrick-wr703n-wifi-router/ http://www.tricksguide.com/how-to-setup-a-tftp-server-tftpd32-windows.html</p>\n<p>Using http://www.rfactory.org/OpenWRT/download/ipscan.exe to scan for the ip of the device.</p>\n<p>This is all confusing and not working... On checking http://staticky.com/ar725w.html for a different device, I saw something simular using tftp only</p>\n<p>tftp 8A800000 openwrt.bin\nprotect off BC450000 BC7DFFFF\nerase BC450000 BC7DFFFF\ncp.b 8A800000 BC450000 $(filesize)\nbootm</p>\n<p>The author has a nice description of what the above does &quot;This downloads the firmware image to RAM (which begins at 0x80000000), unprotects the safe area of the flash chip, erases said flash space and then copies (writes) onto the flash chip from the RAM image. The bootm command boots the image in 0xBC450000 by default. It is also useful for booting an uImage in memory, like the kernel+initramfs images that OpenWRT can build. In that case, something like bootm 8a800000 works.&quot;</p>\n<p>This makes more sense on how the below lines of commands in http://forums.openpilot.org/blog/52/entry-92-unbrick-wr703n-wifi-router/ works.</p>\n<p>hornet&gt; tftpboot 0x81000000 openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin\nhornet&gt; erase 0x9f020000 +0x3c0000\nhornet&gt; cp.b 0x81000000 0x9f020000 0x3c0000\nhornet&gt; bootm 9f020000</p>\n<p>Okay I think this is using Das U-boot bootloader. I could try uploading over serial, but man... there is no good kermit or ymodem programs for windows (Haven't yet transitined to linux yet D: )</p>\n<p>http://www.jackslab.org/?portfolio=u-boot-quick-start</p>\n<p>Ooooh so there is more commands under Uboot e.g. tftp http://support.atmel.no/knowledgebase/avr32studiohelp/com.atmel.avr32.tool.ngw100/html/u_boot_command_reference.html</p>\n<p>Ahhh screw this... I think trying to get this working over tftp under windows is screwed up... I'll shelve this, until maybe I find a kermit serial modem thing in python or something</p>\n",
      "date_published": "2014-06-28T13:40:21Z"
    },
    {
      "id": "/blog/2014/06/15/parsedown_include/",
      "url": "/blog/2014/06/15/parsedown_include/",
      "title": "Parsedown Include",
      "content_html":"<p>You might find this useful. It's a way to include a markdown file as if you were doing a PHP include() command, into your page. This would make for easier modification of your webpage by separating the text from the layout. This requires that you already have Parsedown.php from <a href=\"parsedown.org\">parsedown.org</a>.</p>\n<p>function parsedownInclude($f){\nrequire_once 'Parsedown.php';\n$Parsedown = new Parsedown();\necho is_readable($f) ? $Parsedown-&gt;text(file_get_contents($f)) : &quot;File Not Found&quot;.htmlspecialchars($f);\n}</p>\n<!--more-->\n<p>Let me know if it has been of assistance to you!</p>\n",
      "date_published": "2014-06-15T00:00:00Z"
    },
    {
      "id": "/blog/2014/06/15/parsedownRender/",
      "url": "/blog/2014/06/15/parsedownRender/",
      "title": "Parsedown Render",
      "content_html":"<p>Here is a parsedownRender.php file for you to easily present your markdown files (e.g. <a href=\"/md/test.md\">test.md</a> ). Let me know if it was helpful!</p>\n<!--more-->\n<pre class=\"language-php\"><code class=\"language-php\"><span class=\"token php language-php\"><span class=\"token delimiter important\">&lt;?php</span>\n<span class=\"token comment\">/*\nCoder: Brian Khuu briankhuu.com\nPurpose: To allow for displaying of .md file transparently to visitors via http://parsedown.org and mod_rewrite\nUsage: Place this file (parsedownRender.php) in your root directory and add these lines below to your .htaccess file\n\n\t&lt;IfModule mod_rewrite.c>\n\tRewriteEngine On\n\tRewriteCond  %{REQUEST_URI} ^(.*)\\.md\n\tRewriteRule . /parsedownRender.php?css=/css/markdown1.css&amp;file=%{REQUEST_URI} [L]\n\t&lt;/IfModule>\n\n\t*/</span>\n<span class=\"token variable\">$file</span> <span class=\"token operator\">=</span> <span class=\"token string double-quoted-string\">\"./\"</span><span class=\"token operator\">.</span><span class=\"token variable\">$_GET</span><span class=\"token punctuation\">[</span><span class=\"token string double-quoted-string\">\"file\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// 'file' => /md/test.md</span>\n<span class=\"token variable\">$css</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span> <span class=\"token variable\">$_GET</span><span class=\"token punctuation\">[</span><span class=\"token string single-quoted-string\">'css'</span><span class=\"token punctuation\">]</span><span class=\"token operator\">!=</span><span class=\"token string double-quoted-string\">\"\"</span> <span class=\"token punctuation\">)</span> <span class=\"token operator\">?</span> <span class=\"token function\">htmlspecialchars</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$_GET</span><span class=\"token punctuation\">[</span><span class=\"token string single-quoted-string\">'css'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">:</span> <span class=\"token string double-quoted-string\">\"/css/style.css\"</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">function</span> <span class=\"token function-definition function\">parsedownInclude</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$f</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n\t<span class=\"token keyword\">require_once</span> <span class=\"token string single-quoted-string\">'Parsedown.php'</span><span class=\"token punctuation\">;</span>\n\t<span class=\"token variable\">$Parsedown</span> <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Parsedown</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t<span class=\"token keyword\">echo</span> <span class=\"token function\">is_readable</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$f</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">?</span> <span class=\"token variable\">$Parsedown</span><span class=\"token operator\">-></span><span class=\"token function\">text</span><span class=\"token punctuation\">(</span><span class=\"token function\">file_get_contents</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$f</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">:</span> <span class=\"token string double-quoted-string\">\"File Not Found: \"</span><span class=\"token operator\">.</span><span class=\"token function\">htmlspecialchars</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$f</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n<span class=\"token delimiter important\">?></span></span>\n<span class=\"token doctype\"><span class=\"token punctuation\">&lt;!</span><span class=\"token doctype-tag\">DOCTYPE</span> <span class=\"token name\">html</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>head</span><span class=\"token punctuation\">></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>link</span> <span class=\"token attr-name\">rel</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>stylesheet<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">type</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>text/css<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">href</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span><span class=\"token php language-php\"><span class=\"token delimiter important\">&lt;?php</span> <span class=\"token keyword\">echo</span> <span class=\"token variable\">$css</span> <span class=\"token delimiter important\">?></span></span><span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>head</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>body</span><span class=\"token punctuation\">></span></span>\n<span class=\"token php language-php\"><span class=\"token delimiter important\">&lt;?php</span> <span class=\"token function\">parsedownInclude</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$file</span><span class=\"token punctuation\">)</span> <span class=\"token delimiter important\">?></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>body</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>html</span><span class=\"token punctuation\">></span></span></code></pre>\n<p>Let me know if it helped you!</p>\n",
      "date_published": "2014-06-15T00:00:00Z"
    },
    {
      "id": "/blog/2014/06/15/flatfile_blog_done/",
      "url": "/blog/2014/06/15/flatfile_blog_done/",
      "title": "Flat File Blog Done",
      "content_html":"<p>Finally got the minimalistic flatfile blogging system completed.</p>\n<p>Essentally all the post in my blog is organized as flat files in a folder called /blog/ they are all named in this format:</p>\n<p>[ISO8601 timedate]+[optional &quot;_&quot;or&quot; &quot;]+[title of post]+ [file extension &quot;.txt&quot; &quot;.md&quot;]</p>\n<p>Regular expression used to extract these information is &quot;/(?P<iso8601>\\d{4}-(?:W)?\\d{1,2}-\\d{1,2}(?:T\\d{2}:\\d{2}:\\d{2})?[Z]?(?:[+-]\\d{2}:\\d{2})?)?[ _]?(?P<title>[^.]+)(?P<fileExtention>..*)?/&quot; . Again, please contact me if you use it, I would really love to hear your progress.</p>\n<p>If you need any assistance in how I created this site, let me know as well! I'm more than happy to share my codes.</p>\n</title></iso8601></p>",
      "date_published": "2014-06-15T00:00:00Z"
    },
    {
      "id": "/blog/2014/06/14/First_Post/",
      "url": "/blog/2014/06/14/First_Post/",
      "title": "First Post",
      "content_html":"<p>This is the first test post for this minimalistic blog. First overhaul of the website in a while. This time most of the code from skeleton HTML/CSS framework was removed( <a href=\"http://www.getskeleton.com\">www.getskeleton.com</a> ), only kept bit of formatting (because too lazy to remove it, and their font choice are still pretty good). Still keeping the scrolling effect as that is still very nice to look at.</p>\n<hr />\n<p>Edit: There has been some modifications to this website using jekyll, so it's much different now. Thus the old about text is out of date. Here is what it said.</p>\n<h2>Some old text pre-jekyll</h2>\n<p>This page is designed to be visually minimalistic. For the scrolling to link anchor, I used this jquery tutorial found in this <a href=\"http://www.paulund.co.uk/smooth-scroll-to-internal-links-with-jquery\">link</a>. The parallax background was done by using this tutorial in this <a href=\"http://www.webdesignerdepot.com/2013/07/how-to-create-a-simple-parallax-effect/\">link</a> (but modified to support multiple background elements, try scrolling the page)</p>\n<hr />\n<p>This is the base Jekyll theme. You can find out more info about customizing your Jekyll theme, as well as basic Jekyll usage documentation at <a href=\"http://jekyllrb.com/\">jekyllrb.com</a></p>\n<p>You can find the source code for the Jekyll new theme at: <a href=\"https://github.com/jglovier/jekyll-new\">github.com/jglovier/jekyll-new</a></p>\n<p>You can find the source code for Jekyll at <a href=\"https://github.com/jekyll/jekyll\">github.com/jekyll/jekyll</a></p>\n",
      "date_published": "2014-06-14T00:00:00Z"
    }
  ]
}