Newer
Older
<a href="../../architecture/osom/" class="md-nav__link">
Dimitrios Giannopoulos
committed
Dimitrios Giannopoulos
committed
<span class="md-ellipsis">
OSOM
Dimitrios Giannopoulos
committed
</span>
Dimitrios Giannopoulos
committed
</a>
</li>
<li class="md-nav__item">
<a href="../../architecture/cridge/" class="md-nav__link">
Dimitrios Giannopoulos
committed
Dimitrios Giannopoulos
committed
<span class="md-ellipsis">
CRIDGE
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../architecture/metrico/" class="md-nav__link">
<span class="md-ellipsis">
METRICO
Dimitrios Giannopoulos
committed
</span>
Dimitrios Giannopoulos
committed
</a>
</li>
<li class="md-nav__item">
<a href="../../architecture/oauth/" class="md-nav__link">
Dimitrios Giannopoulos
committed
<span class="md-ellipsis">
Dimitrios Giannopoulos
committed
Authentication
Dimitrios Giannopoulos
committed
</span>
Dimitrios Giannopoulos
committed
</a>
</li>
Dimitrios Giannopoulos
committed
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7_7">
Dimitrios Giannopoulos
committed
<label class="md-nav__link" for="__nav_7_7" id="__nav_7_7_label" tabindex="0">
Dimitrios Giannopoulos
committed
Dimitrios Giannopoulos
committed
<span class="md-ellipsis">
Dimitrios Giannopoulos
committed
APIs
Dimitrios Giannopoulos
committed
</span>
Dimitrios Giannopoulos
committed
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7_7">
Dimitrios Giannopoulos
committed
<span class="md-nav__icon md-icon"></span>
APIs
Dimitrios Giannopoulos
committed
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../architecture/tmfapi/" class="md-nav__link">
Dimitrios Giannopoulos
committed
<span class="md-ellipsis">
Dimitrios Giannopoulos
committed
TMF API
Dimitrios Giannopoulos
committed
</span>
Dimitrios Giannopoulos
committed
</a>
</li>
<li class="md-nav__item">
<a href="../../architecture/nfvapi/" class="md-nav__link">
Dimitrios Giannopoulos
committed
<span class="md-ellipsis">
Dimitrios Giannopoulos
committed
NFV API
Dimitrios Giannopoulos
committed
</span>
Dimitrios Giannopoulos
committed
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../architecture/issuemgt/" class="md-nav__link">
Dimitrios Giannopoulos
committed
<span class="md-ellipsis">
Dimitrios Giannopoulos
committed
Issue management
Dimitrios Giannopoulos
committed
</span>
Dimitrios Giannopoulos
committed
</a>
</li>
<li class="md-nav__item">
<a href="../../architecture/centrallog/" class="md-nav__link">
Dimitrios Giannopoulos
committed
<span class="md-ellipsis">
Dimitrios Giannopoulos
committed
Central logging
Dimitrios Giannopoulos
committed
</span>
Dimitrios Giannopoulos
committed
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
</a>
</li>
</ul>
</nav>
</li>
Dimitrios Giannopoulos
committed
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8">
Dimitrios Giannopoulos
committed
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
Dimitrios Giannopoulos
committed
Dimitrios Giannopoulos
committed
<span class="md-ellipsis">
Contribute
Dimitrios Giannopoulos
committed
</span>
Dimitrios Giannopoulos
committed
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_8">
Dimitrios Giannopoulos
committed
<span class="md-nav__icon md-icon"></span>
Contribute
Dimitrios Giannopoulos
committed
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../contribute/developing/" class="md-nav__link">
Dimitrios Giannopoulos
committed
Dimitrios Giannopoulos
committed
<span class="md-ellipsis">
Dimitrios Giannopoulos
committed
Developing
Dimitrios Giannopoulos
committed
</span>
Dimitrios Giannopoulos
committed
</a>
</li>
<li class="md-nav__item">
<a href="../../contribute/documenting/" class="md-nav__link">
<span class="md-ellipsis">
Documenting
</span>
</a>
</li>
Dimitrios Giannopoulos
committed
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../terminology/" class="md-nav__link">
Dimitrios Giannopoulos
committed
<span class="md-ellipsis">
Dimitrios Giannopoulos
committed
Terminology
Dimitrios Giannopoulos
committed
</span>
Dimitrios Giannopoulos
committed
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc">
Dimitrios Giannopoulos
committed
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
Dimitrios Giannopoulos
committed
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#introduction-in-openslice-lcm" class="md-nav__link">
<span class="md-ellipsis">
Introduction in OpenSlice LCM
Dimitrios Giannopoulos
committed
</span>
</a>
<nav class="md-nav" aria-label="Introduction in OpenSlice LCM">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#0-preparation-phase" class="md-nav__link">
<span class="md-ellipsis">
0. Preparation Phase
Dimitrios Giannopoulos
committed
</span>
</a>
<nav class="md-nav" aria-label="0. Preparation Phase">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#service-design" class="md-nav__link">
<span class="md-ellipsis">
Service Design:
Dimitrios Giannopoulos
committed
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#1-instantiation-phase" class="md-nav__link">
<span class="md-ellipsis">
1. Instantiation Phase
Dimitrios Giannopoulos
committed
</span>
</a>
<nav class="md-nav" aria-label="1. Instantiation Phase">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#service-instantiation" class="md-nav__link">
<span class="md-ellipsis">
Service Instantiation:
Dimitrios Giannopoulos
committed
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#service-deployment" class="md-nav__link">
<span class="md-ellipsis">
Service Deployment:
Dimitrios Giannopoulos
committed
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#2-operation-phase" class="md-nav__link">
<span class="md-ellipsis">
2. Operation Phase
Dimitrios Giannopoulos
committed
</span>
</a>
<nav class="md-nav" aria-label="2. Operation Phase">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#service-operation" class="md-nav__link">
<span class="md-ellipsis">
Service Operation:
Dimitrios Giannopoulos
committed
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#3-decommissioning-phase" class="md-nav__link">
<span class="md-ellipsis">
3. Decommissioning Phase
Dimitrios Giannopoulos
committed
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#high-level-example-enhanced-mobile-broadband-embb-service-lifecycle" class="md-nav__link">
<span class="md-ellipsis">
High level example: Enhanced Mobile Broadband (eMBB) Service Lifecycle
Dimitrios Giannopoulos
committed
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#probe-further" class="md-nav__link">
<span class="md-ellipsis">
Probe further
Dimitrios Giannopoulos
committed
</span>
</a>
</li>
</ul>
Dimitrios Giannopoulos
committed
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
<nav class="md-path" aria-label="Navigation">
<ol class="md-path__list">
<li class="md-path__item">
<a href="../introduction/" class="md-path__link">
<span class="md-ellipsis">
NaaS
</span>
</a>
</li>
<li class="md-path__item">
<a href="../so_intro/" class="md-path__link">
<span class="md-ellipsis">
Service orchestration
</span>
</a>
</li>
</ol>
</nav>
Dimitrios Giannopoulos
committed
<article class="md-content__inner md-typeset">
Dimitrios Giannopoulos
committed
<h1 id="lifecycle-management-lcm">Lifecycle Management - LCM</h1>
<p><strong>Intended Audience: OpenSlice Service Designers</strong></p>
Dimitrios Giannopoulos
committed
<p>Lifecycle Management: The orchestration framework handles the activation, termination and any necessary modifications throughout the service lifecycle.</p>
Dimitrios Giannopoulos
committed
<p>In OpenSlice the Lifecycle of a service follows in general the concept of Network Slice lifecycle as defined by 3GPP.</p>
<p><a class="glightbox" data-type="image" data-width="100%" data-height="auto" href="../lcm/img01.png" data-desc-position="bottom"><img alt="lcm" src="../lcm/img01.png"></a></p>
Dimitrios Giannopoulos
committed
<h2 id="introduction-in-openslice-lcm">Introduction in OpenSlice LCM</h2>
Dimitrios Giannopoulos
committed
<p>OpenSlice adopted the LCM model by 3GPP and mapped to the TMF model service state. Next we discuss briefly the process and the relationships.</p>
<p>The lifecycle of a service, particularly in the context of Network Service lifecycle encompasses several stages that ensure the service is effectively planned, deployed, managed, and eventually decommissioned. </p>
Dimitrios Giannopoulos
committed
<p>Here is an overview of these stages and relationships with OpenSlice:</p>
<h3 id="0-preparation-phase">0. Preparation Phase</h3>
<p>This phase is performed by Service Designers</p>
<h4 id="service-design">Service Design:</h4>
<ul>
<li><strong>Requirements Gathering:</strong> Collect service requirements from stakeholders, including performance metrics, quality of service (QoS), security needs, and geographical coverage.</li>
<li><strong>Service Specification:</strong> Define the service in terms of functionalities, attributes, and dependencies. This can be formalized using standardized templates such as the GSMA Generic Slice Template (GST).</li>
<li><strong>Resource Planning:</strong> Identify and plan the required resources, including network functions, computing power, storage, and connectivity, inclluding network function configurations.</li>
<li><strong>Expose to Service Catalog</strong>: Expose to service catalog for user ordering.</li>
</ul>
<p><strong>Next phases are handled by the Service Orchestrator after a service is scheduled for instantiation</strong></p>
<p><strong>If it is a bundle of services, each services follows its own Lifecycle!</strong></p>
<h3 id="1-instantiation-phase">1. Instantiation Phase</h3>
<h4 id="service-instantiation">Service Instantiation:</h4>
<ul>
Dimitrios Giannopoulos
committed
<li><strong>Configuration:</strong> Configure the network service according to the specifications including the user requirements from the service order, ensuring that all components are correctly set up to provide the desired service.</li>
<li><strong>Resource Allocation - Feasibility check:</strong> Allocate the necessary physical and virtual resources based on the service specification. This includes any containerized resources, virtual network functions (VNFs) and software-defined networking (SDN) components. (This step is not performed in OpenSlice)</li>
Dimitrios Giannopoulos
committed
<li>OpenSlice Service Orchestrator creates the services at "RESERVED" state</li>
<li><strong>User Notification:</strong> There could be an email notification from the system (if Bugzilla is configured)</li>
</ul>
<h4 id="service-deployment">Service Deployment:</h4>
<ul>
<li><strong>Activation:</strong> OpenSlice Service Orchestrator activates the network service and makes the service available to the end-users. This may involve:</li>
<li>Create any related services that the service depends on</li>
<li>Contacting all related controllers during provisioning, e.g. Kubernetes controllers, Kubernetes operators, MANO Orchestrators, RAN controllers, SDN Controlles, or other external services (e.g. via REST calls)</li>
<li>Scheduling instantiation, Resolving dependencies and passing paramemters between controllers,</li>
<li>setting up user accounts, provisioning access credentials -this is performed either offline or via other services.</li>
Dimitrios Giannopoulos
committed
<li>OpenSlice Service Orchestrator if everything is succesful puts the service at "ACTIVE" state</li>
Dimitrios Giannopoulos
committed
<li><strong>User Notification:</strong> There could be an email notification from the system (if Bugzilla is configured)</li>
</ul>
<h3 id="2-operation-phase">2. Operation Phase</h3>
<h4 id="service-operation">Service Operation:</h4>
<ul>
<li><strong>Lifecycle Management:</strong> Manage the network slice throughout its lifecycle, including scaling, reconfiguration, and adaptation to changing requirements. </li>
<li>In OpenSlice this is performed with Lifecycle management Rules (see next)</li>
</ul>
<p>In this phase the Service Designer can define several aspects. <strong>Be aware that these are NOT performed automatically by OpenSlice - further examples and future enhancements will address these</strong>. This could include:</p>
<ul>
<li><strong>Monitoring:</strong> Continuously monitor the service for performance, availability, and compliance with SLAs. Utilize tools for real-time tracking and alerts for any anomalies or performance degradation.</li>
<li><strong>Maintenance:</strong> Conduct regular maintenance activities, including software updates, patching, and optimization to ensure the service runs smoothly.</li>
<li><strong>Scaling:</strong> Dynamically scale the resources up or down based on the demand and performance requirements.</li>
<li><strong>Fault Management:</strong> Detect and resolve faults in the network slice to minimize downtime and maintain service quality.</li>
</ul>
<h3 id="3-decommissioning-phase">3. Decommissioning Phase</h3>
Dimitrios Giannopoulos
committed
<ul>
<li><strong>Service Termination:</strong> Service Orchestrator terminates the network service. This may involve:</li>
<li>Terminate any related services that the service depends on</li>
<li>Contacting all related controllers during termination to release resources, e.g. Kubernetes controllers, Kubernetes operators, MANO Orchestrators, RAN controllers, SDN Controlles, or other external services (e.g. via REST calls)</li>
<li>Scheduling termination, Resolving dependencies and passing paramemters between controllers</li>
<li>OpenSlice Service Orchestrator, if everything is succesful, puts the service at "TERMINATED" state</li>
<li><strong>User Notification:</strong> There could be an email notification from the system (if Bugzilla is configured)</li>
</ul>
Dimitrios Giannopoulos
committed
<h3 id="high-level-example-enhanced-mobile-broadband-embb-service-lifecycle">High level example: Enhanced Mobile Broadband (eMBB) Service Lifecycle</h3>
<ol>
Dimitrios Giannopoulos
committed
<li>
<p><strong>Preparation:</strong></p>
</li>
<li>
<p>Define eMBB service requirements for high bandwidth and low latency.</p>
</li>
Dimitrios Giannopoulos
committed
<li>Create an eMBB service specification template specifying related services and resources to Kubernetes Operators, VNFs for content delivery and traffic management.</li>
<li>
<p>Expose to catalog</p>
</li>
<li>
<p><strong>Instantiation:</strong></p>
</li>
Dimitrios Giannopoulos
committed
<li>
<p>Instantiate other services and allocate resources such as edge computing nodes and high-capacity links.</p>
</li>
Dimitrios Giannopoulos
committed
<li>
<p>Configure the service to prioritize video streaming traffic.</p>
</li>
<li>
<p><strong>Operation:</strong></p>
</li>
Dimitrios Giannopoulos
committed
<li>
<p>Monitor the service to ensure it meets high-bandwidth requirements.</p>
</li>
Dimitrios Giannopoulos
committed
<li>
<p>Scale up resources during peak usage periods, such as live sports events.</p>
</li>
<li>
<p><strong>Decommissioning:</strong></p>
</li>
Dimitrios Giannopoulos
committed
<li>
<p>Notify users about service termination.</p>
</li>
Dimitrios Giannopoulos
committed
<li>Decommission the network service, reclaiming resources for other services.</li>
</ol>
<h2 id="probe-further">Probe further</h2>
Dimitrios Giannopoulos
committed
<ul>
Dimitrios Giannopoulos
committed
<li>See 3GPP <a href="https://portal.3gpp.org/desktopmodules/Specifications/SpecificationDetails.aspx?specificationId=3091">Lifecycle</a></li>
Dimitrios Giannopoulos
committed
</ul>
Dimitrios Giannopoulos
committed
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"></path></svg>
Dimitrios Giannopoulos
committed
Back to top
</button>
</main>
<footer class="md-footer">
<nav class="md-footer__inner md-grid" aria-label="Footer">
Dimitrios Giannopoulos
committed
<a href="../so_intro/" class="md-footer__link md-footer__link--prev" aria-label="Previous: Introduction">
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"></path></svg>
Dimitrios Giannopoulos
committed
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806
3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
3817
3818
</div>
<div class="md-footer__title">
<span class="md-footer__direction">
Previous
</span>
<div class="md-ellipsis">
Introduction
</div>
</div>
</a>
<a href="../lcm_rules_intro/" class="md-footer__link md-footer__link--next" aria-label="Next: LCM Rules Introduction">
<div class="md-footer__title">
<span class="md-footer__direction">
Next
</span>
<div class="md-ellipsis">
LCM Rules Introduction
</div>
</div>
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11z"></path></svg>
Dimitrios Giannopoulos
committed
</div>
</a>
</nav>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
<div class="md-copyright__highlight">
Copyright © 2025 ETSI OSL
Dimitrios Giannopoulos
committed
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<div class="md-social">
Dimitrios Giannopoulos
committed
<a href="https://osl.etsi.org/" target="_blank" rel="noopener" title="osl.etsi.org" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M351.9 280H161c2.9 64.5 17.2 123.9 37.5 167.4 11.4 24.5 23.7 41.8 35.1 52.4 11.2 10.5 18.9 12.2 22.9 12.2s11.7-1.7 22.9-12.2c11.4-10.6 23.7-28 35.1-52.4 20.3-43.5 34.6-102.9 37.5-167.4zm-191-48h190.9c-2.8-64.5-17.1-123.9-37.4-167.4-11.4-24.4-23.7-41.8-35.1-52.4C268.1 1.7 260.4 0 256.4 0s-11.7 1.7-22.9 12.2c-11.4 10.6-23.7 28-35.1 52.4-20.3 43.5-34.6 102.9-37.5 167.4m-48 0c3.5-85.6 25.6-165.1 57.9-217.3C78.7 47.3 10.9 131.2 1.5 232zM1.5 280c9.4 100.8 77.2 184.7 169.3 217.3-32.3-52.2-54.4-131.7-57.9-217.3zm398.4 0c-3.5 85.6-25.6 165.1-57.9 217.3 92.1-32.7 159.9-116.5 169.3-217.3zm111.4-48C501.9 131.2 434.1 47.3 342 14.7c32.3 52.2 54.4 131.7 57.9 217.3z"></path></svg>
Dimitrios Giannopoulos
committed
</a>
<a href="https://labs.etsi.org/rep/osl" target="_blank" rel="noopener" title="labs.etsi.org" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="m504 204.6-.7-1.8L433.6 21c-1.4-3.6-3.9-6.6-7.2-8.6-2.4-1.6-5.1-2.5-8-2.8s-5.7.1-8.4 1.1-5.1 2.7-7.1 4.8c-1.9 2.1-3.3 4.7-4.1 7.4l-47 144H161.3l-47.1-144c-.8-2.8-2.2-5.3-4.1-7.4-2-2.1-4.4-3.7-7.1-4.8-2.6-1-5.5-1.4-8.4-1.1s-5.6 1.2-8 2.8c-3.2 2-5.8 5.1-7.2 8.6L9.8 202.8l-.8 1.8c-10 26.2-11.3 55-3.5 82 7.7 26.9 24 50.7 46.4 67.6l.3.2.6.4 106 79.5c38.5 29.1 66.7 50.3 84.6 63.9 3.7 1.9 8.3 4.3 13 4.3s9.3-2.4 13-4.3c17.9-13.5 46.1-34.9 84.6-63.9l106.7-79.9.3-.3c22.4-16.9 38.7-40.6 45.6-67.5 8.6-27 7.4-55.8-2.6-82"></path></svg>
Dimitrios Giannopoulos
committed
</a>
<a href="https://www.linkedin.com/company/openslice/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"></path></svg>
Dimitrios Giannopoulos
committed
</a>
<a href="https://twitter.com/OpensliceOSS" target="_blank" rel="noopener" title="twitter.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M357.2 48h70.6L273.6 224.2 455 464H313L201.7 318.6 74.5 464H3.8l164.9-188.5L-5.2 48h145.6l100.5 132.9zm-24.8 373.8h39.1L119.1 88h-42z"></path></svg>
Dimitrios Giannopoulos
committed
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<div class="md-progress" data-md-component="progress" role="progressbar"></div>
<script id="__config" type="application/json">{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.instant.progress", "navigation.top", "navigation.footer", "navigation.path", "search", "search.highlight", "content.code.copy"], "search": "../../assets/javascripts/workers/search.7a47a382.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": {"provider": "mike"}}</script>
Dimitrios Giannopoulos
committed
<script src="../../assets/javascripts/bundle.e71a0d61.min.js"></script>
Dimitrios Giannopoulos
committed
<script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
document$.subscribe(()=>{ lightbox.reload(); });
</script></body></html>