<div class="xblock xblock-public_view xblock-public_view-vertical" data-course-id="course-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1" data-init="VerticalStudentView" data-runtime-class="LmsRuntime" data-runtime-version="1" data-block-type="vertical" data-usage-id="block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@vertical+block@fa0a8dbe43a74c2d9a68ef4634541718" data-request-token="efc7b584028911efabb30242ac12000b" data-graded="True" data-has-score="False">
<div class="vert-mod">
<div class="vert vert-0" data-id="block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@video+block@4680c241a7e549cba67053d00698a952">
<div class="xblock xblock-public_view xblock-public_view-video xmodule_display xmodule_VideoBlock" data-course-id="course-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1" data-init="XBlockToXModuleShim" data-runtime-class="LmsRuntime" data-runtime-version="1" data-block-type="video" data-usage-id="block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@video+block@4680c241a7e549cba67053d00698a952" data-request-token="efc7b584028911efabb30242ac12000b" data-graded="True" data-has-score="False">
<script type="json/xblock-args" class="xblock-json-init-args">
{"xmodule-type": "Video"}
</script>
<h3 class="hd hd-2">Video</h3>
<div
id="video_4680c241a7e549cba67053d00698a952"
class="video closed"
data-metadata='{"autoAdvance": false, "autohideHtml5": false, "autoplay": false, "captionDataDir": null, "completionEnabled": false, "completionPercentage": 0.95, "duration": 0.0, "end": 0.0, "generalSpeed": 1.0, "lmsRootURL": "https://p.ost2.fyi", "poster": null, "prioritizeHls": false, "publishCompletionUrl": "/courses/course-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1/xblock/block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@video+block@4680c241a7e549cba67053d00698a952/handler/publish_completion", "recordedYoutubeIsAvailable": true, "savedVideoPosition": 0.0, "saveStateEnabled": false, "saveStateUrl": "/courses/course-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1/xblock/block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@video+block@4680c241a7e549cba67053d00698a952/handler/xmodule_handler/save_user_state", "showCaptions": "false", "sources": [], "speed": null, "start": 0.0, "streams": "1.00:69vVRIoexNo", "transcriptAvailableTranslationsUrl": "/courses/course-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1/xblock/block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@video+block@4680c241a7e549cba67053d00698a952/handler/transcript/available_translations", "transcriptLanguage": "en", "transcriptLanguages": {"en": "English"}, "transcriptTranslationUrl": "/courses/course-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1/xblock/block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@video+block@4680c241a7e549cba67053d00698a952/handler/transcript/translation/__lang__", "ytApiUrl": "https://www.youtube.com/iframe_api", "ytMetadataEndpoint": "", "ytTestTimeout": 1500}'
data-bumper-metadata='null'
data-autoadvance-enabled="False"
data-poster='null'
tabindex="-1"
>
<div class="focus_grabber first"></div>
<div class="tc-wrapper">
<div class="video-wrapper">
<span tabindex="0" class="spinner" aria-hidden="false" aria-label="Loading video player"></span>
<span tabindex="-1" class="btn-play fa fa-youtube-play fa-2x is-hidden" aria-hidden="true" aria-label="Play video"></span>
<div class="video-player-pre"></div>
<div class="video-player">
<div id="4680c241a7e549cba67053d00698a952"></div>
<h4 class="hd hd-4 video-error is-hidden">No playable video sources found.</h4>
<h4 class="hd hd-4 video-hls-error is-hidden">
Your browser does not support this video format. Try using a different browser.
</h4>
</div>
<div class="video-player-post"></div>
<div class="closed-captions"></div>
<div class="video-controls is-hidden">
<div>
<div class="vcr"><div class="vidtime">0:00 / 0:00</div></div>
<div class="secondary-controls"></div>
</div>
</div>
</div>
</div>
<div class="focus_grabber last"></div>
</div>
</div>
</div>
<div class="vert vert-1" data-id="block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@markdown+block@e8759c5b7e074f32833e3a441754d4c8">
<div class="xblock xblock-public_view xblock-public_view-markdown" data-course-id="course-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1" data-block-type="markdown" data-usage-id="block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@markdown+block@e8759c5b7e074f32833e3a441754d4c8" data-request-token="efc7b584028911efabb30242ac12000b" data-graded="True" data-has-score="False">
<div class="markdown_xblock"><h2>Tianocore community resources</h2>
<ul>
<li><a href="https://www.tianocore.org/">Documentation</a>: https://www.tianocore.org/</li>
<li><a href="https://bugzilla.tianocore.org/">Issue tracking and bug reporting</a>: https://bugzilla.tianocore.org/</li>
<li>IRC: #edk2 at irc.oftc.net</li>
<li><a href="https://edk2.groups.io/g/devel">Mailing list</a>: https://edk2.groups.io/g/devel</li>
<li>Contributing: <a href="mailto:devel@edk2.groups.io">email patches</a> to devel@edk2.groups.io</li>
<li><a href="https://github.com/tianocore/edk2">Source</a>: https://github.com/tianocore/edk2</li>
<li><a href="https://twitter.com/tianocore">Twitter</a>: https://twitter.com/tianocore</li>
<li><a href="https://github.com/tianocore/tianocore.github.io/wiki/EDK-II-Documentation#specifications">Specifications</a>: https://github.com/tianocore/tianocore.github.io/wiki/EDK-II-Documentation#specifications</li>
</ul>
</div>
</div>
</div>
<div class="vert vert-2" data-id="block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@done+block@65189620c1e846188978f79441737ca2">
<div class="xblock xblock-public_view xblock-public_view-done" data-course-id="course-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1" data-block-type="done" data-usage-id="block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@done+block@65189620c1e846188978f79441737ca2" data-request-token="efc7b584028911efabb30242ac12000b" data-graded="True" data-has-score="True">
<div class="page-banner"><div class="alert alert-warning"><span class="icon icon-alert fa fa fa-warning" aria-hidden="true"></span><div class="message-content">Completion is only accessible to enrolled learners. Sign in or register, and enroll in this course to view it.</div></div></div>
</div>
</div>
<div class="vert vert-3" data-id="block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@discussion+block@e6e54e898bc74617a0c5eb9544104338">
<div class="xblock xblock-public_view xblock-public_view-discussion" data-course-id="course-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1" data-block-type="discussion" data-usage-id="block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@discussion+block@e6e54e898bc74617a0c5eb9544104338" data-request-token="efc7b584028911efabb30242ac12000b" data-graded="True" data-has-score="False">
<div class="page-banner"><div class="alert alert-warning"><span class="icon icon-alert fa fa fa-warning" aria-hidden="true"></span><div class="message-content">Discussion is only accessible to enrolled learners. Sign in or register, and enroll in this course to view it.</div></div></div>
</div>
</div>
</div>
<script type="text/javascript">
(function (require) {
require(['/static/js/dateutil_factory.be68acdff619.js?raw'], function () {
require(['js/dateutil_factory'], function (DateUtilFactory) {
DateUtilFactory.transform('.localized-datetime');
});
});
}).call(this, require || RequireJS.require);
</script>
<script>
function emit_event(message) {
parent.postMessage(message, '*');
}
</script>
</div>
<div class="xblock xblock-public_view xblock-public_view-vertical" data-course-id="course-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1" data-init="VerticalStudentView" data-runtime-class="LmsRuntime" data-runtime-version="1" data-block-type="vertical" data-usage-id="block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@vertical+block@3bc7e533b8bc478f89ae9c02e306adcd" data-request-token="efc7b584028911efabb30242ac12000b" data-graded="True" data-has-score="False">
<div class="vert-mod">
<div class="vert vert-0" data-id="block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@video+block@5d26021affbc459b99c94a6f66dc4ca5">
<div class="xblock xblock-public_view xblock-public_view-video xmodule_display xmodule_VideoBlock" data-course-id="course-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1" data-init="XBlockToXModuleShim" data-runtime-class="LmsRuntime" data-runtime-version="1" data-block-type="video" data-usage-id="block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@video+block@5d26021affbc459b99c94a6f66dc4ca5" data-request-token="efc7b584028911efabb30242ac12000b" data-graded="True" data-has-score="False">
<script type="json/xblock-args" class="xblock-json-init-args">
{"xmodule-type": "Video"}
</script>
<h3 class="hd hd-2">Video</h3>
<div
id="video_5d26021affbc459b99c94a6f66dc4ca5"
class="video closed"
data-metadata='{"autoAdvance": false, "autohideHtml5": false, "autoplay": false, "captionDataDir": null, "completionEnabled": false, "completionPercentage": 0.95, "duration": 0.0, "end": 0.0, "generalSpeed": 1.0, "lmsRootURL": "https://p.ost2.fyi", "poster": null, "prioritizeHls": false, "publishCompletionUrl": "/courses/course-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1/xblock/block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@video+block@5d26021affbc459b99c94a6f66dc4ca5/handler/publish_completion", "recordedYoutubeIsAvailable": true, "savedVideoPosition": 0.0, "saveStateEnabled": false, "saveStateUrl": "/courses/course-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1/xblock/block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@video+block@5d26021affbc459b99c94a6f66dc4ca5/handler/xmodule_handler/save_user_state", "showCaptions": "false", "sources": [], "speed": null, "start": 0.0, "streams": "1.00:u7zn-9naJfg", "transcriptAvailableTranslationsUrl": "/courses/course-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1/xblock/block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@video+block@5d26021affbc459b99c94a6f66dc4ca5/handler/transcript/available_translations", "transcriptLanguage": "en", "transcriptLanguages": {"en": "English"}, "transcriptTranslationUrl": "/courses/course-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1/xblock/block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@video+block@5d26021affbc459b99c94a6f66dc4ca5/handler/transcript/translation/__lang__", "ytApiUrl": "https://www.youtube.com/iframe_api", "ytMetadataEndpoint": "", "ytTestTimeout": 1500}'
data-bumper-metadata='null'
data-autoadvance-enabled="False"
data-poster='null'
tabindex="-1"
>
<div class="focus_grabber first"></div>
<div class="tc-wrapper">
<div class="video-wrapper">
<span tabindex="0" class="spinner" aria-hidden="false" aria-label="Loading video player"></span>
<span tabindex="-1" class="btn-play fa fa-youtube-play fa-2x is-hidden" aria-hidden="true" aria-label="Play video"></span>
<div class="video-player-pre"></div>
<div class="video-player">
<div id="5d26021affbc459b99c94a6f66dc4ca5"></div>
<h4 class="hd hd-4 video-error is-hidden">No playable video sources found.</h4>
<h4 class="hd hd-4 video-hls-error is-hidden">
Your browser does not support this video format. Try using a different browser.
</h4>
</div>
<div class="video-player-post"></div>
<div class="closed-captions"></div>
<div class="video-controls is-hidden">
<div>
<div class="vcr"><div class="vidtime">0:00 / 0:00</div></div>
<div class="secondary-controls"></div>
</div>
</div>
</div>
</div>
<div class="focus_grabber last"></div>
</div>
</div>
</div>
<div class="vert vert-1" data-id="block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@markdown+block@29805b09e528475c8a4628ef0d426e06">
<div class="xblock xblock-public_view xblock-public_view-markdown" data-course-id="course-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1" data-block-type="markdown" data-usage-id="block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@markdown+block@29805b09e528475c8a4628ef0d426e06" data-request-token="efc7b584028911efabb30242ac12000b" data-graded="True" data-has-score="False">
<div class="markdown_xblock"><h2>Abbreviations, acronyms and terms brief explanation</h2>
<p>Some abbreviations/acronyms/terms that occur in the source tree shown above, and what they stand for. You don't need to memorize these, they're just incase you were curious:</p>
<ul>
<li>FmpDevicePkg -> FMP = Firmware Management Protocol (A protocol defined in the UEFI spec to manage firmware updates.)</li>
<li>IntelFsp2{Wrapper}Pkg -> FSP = Firmware Support Package (A set of binary blobs that handle Intel hardware initialization.)</li>
<li>Mde{Module}Pkg -> MDE = Module Development Environment (The UEFI development environment.)</li>
<li>OvmfPkg -> OVMF = Open Virtual Machine Format (This is what we'll be using to build a firmware to run in QEMU.)</li>
<li>RedfishPkg -> <a href="https://redfish.dmtf.org/">Redfish</a> = A HTTPS-based mechanism for remote management.</li>
<li>BlSupport{Dxe,Smm} -> BL = Board-Level (Pertaining to a specific motherboard hardware configuration.)</li>
<li>FvbRuntimeDxe -> FVB = Firmware Volume Block (A UEFI protocol for accessing the firmware filesystem.)</li>
</ul>
</div>
</div>
</div>
<div class="vert vert-2" data-id="block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@done+block@0f7bb7a6f6af47fd8883fd9b112cedc2">
<div class="xblock xblock-public_view xblock-public_view-done" data-course-id="course-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1" data-block-type="done" data-usage-id="block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@done+block@0f7bb7a6f6af47fd8883fd9b112cedc2" data-request-token="efc7b584028911efabb30242ac12000b" data-graded="True" data-has-score="True">
<div class="page-banner"><div class="alert alert-warning"><span class="icon icon-alert fa fa fa-warning" aria-hidden="true"></span><div class="message-content">Completion is only accessible to enrolled learners. Sign in or register, and enroll in this course to view it.</div></div></div>
</div>
</div>
<div class="vert vert-3" data-id="block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@discussion+block@924b7f61374741a1ae3891273810c419">
<div class="xblock xblock-public_view xblock-public_view-discussion" data-course-id="course-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1" data-block-type="discussion" data-usage-id="block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@discussion+block@924b7f61374741a1ae3891273810c419" data-request-token="efc7b584028911efabb30242ac12000b" data-graded="True" data-has-score="False">
<div class="page-banner"><div class="alert alert-warning"><span class="icon icon-alert fa fa fa-warning" aria-hidden="true"></span><div class="message-content">Discussion is only accessible to enrolled learners. Sign in or register, and enroll in this course to view it.</div></div></div>
</div>
</div>
</div>
<script type="text/javascript">
(function (require) {
require(['/static/js/dateutil_factory.be68acdff619.js?raw'], function () {
require(['js/dateutil_factory'], function (DateUtilFactory) {
DateUtilFactory.transform('.localized-datetime');
});
});
}).call(this, require || RequireJS.require);
</script>
<script>
function emit_event(message) {
parent.postMessage(message, '*');
}
</script>
</div>
<div class="xblock xblock-public_view xblock-public_view-vertical" data-course-id="course-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1" data-init="VerticalStudentView" data-runtime-class="LmsRuntime" data-runtime-version="1" data-block-type="vertical" data-usage-id="block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@vertical+block@fd4cd837e5284dadb5143217c5fdc700" data-request-token="efc7b584028911efabb30242ac12000b" data-graded="True" data-has-score="False">
<div class="vert-mod">
<div class="vert vert-0" data-id="block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@video+block@243936acf7d646bfa68ce4d79c892265">
<div class="xblock xblock-public_view xblock-public_view-video xmodule_display xmodule_VideoBlock" data-course-id="course-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1" data-init="XBlockToXModuleShim" data-runtime-class="LmsRuntime" data-runtime-version="1" data-block-type="video" data-usage-id="block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@video+block@243936acf7d646bfa68ce4d79c892265" data-request-token="efc7b584028911efabb30242ac12000b" data-graded="True" data-has-score="False">
<script type="json/xblock-args" class="xblock-json-init-args">
{"xmodule-type": "Video"}
</script>
<h3 class="hd hd-2">Video</h3>
<div
id="video_243936acf7d646bfa68ce4d79c892265"
class="video closed"
data-metadata='{"autoAdvance": false, "autohideHtml5": false, "autoplay": false, "captionDataDir": null, "completionEnabled": false, "completionPercentage": 0.95, "duration": 0.0, "end": 0.0, "generalSpeed": 1.0, "lmsRootURL": "https://p.ost2.fyi", "poster": null, "prioritizeHls": false, "publishCompletionUrl": "/courses/course-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1/xblock/block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@video+block@243936acf7d646bfa68ce4d79c892265/handler/publish_completion", "recordedYoutubeIsAvailable": true, "savedVideoPosition": 0.0, "saveStateEnabled": false, "saveStateUrl": "/courses/course-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1/xblock/block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@video+block@243936acf7d646bfa68ce4d79c892265/handler/xmodule_handler/save_user_state", "showCaptions": "false", "sources": [], "speed": null, "start": 0.0, "streams": "1.00:obrPfS4K3VE", "transcriptAvailableTranslationsUrl": "/courses/course-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1/xblock/block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@video+block@243936acf7d646bfa68ce4d79c892265/handler/transcript/available_translations", "transcriptLanguage": "en", "transcriptLanguages": {"en": "English"}, "transcriptTranslationUrl": "/courses/course-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1/xblock/block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@video+block@243936acf7d646bfa68ce4d79c892265/handler/transcript/translation/__lang__", "ytApiUrl": "https://www.youtube.com/iframe_api", "ytMetadataEndpoint": "", "ytTestTimeout": 1500}'
data-bumper-metadata='null'
data-autoadvance-enabled="False"
data-poster='null'
tabindex="-1"
>
<div class="focus_grabber first"></div>
<div class="tc-wrapper">
<div class="video-wrapper">
<span tabindex="0" class="spinner" aria-hidden="false" aria-label="Loading video player"></span>
<span tabindex="-1" class="btn-play fa fa-youtube-play fa-2x is-hidden" aria-hidden="true" aria-label="Play video"></span>
<div class="video-player-pre"></div>
<div class="video-player">
<div id="243936acf7d646bfa68ce4d79c892265"></div>
<h4 class="hd hd-4 video-error is-hidden">No playable video sources found.</h4>
<h4 class="hd hd-4 video-hls-error is-hidden">
Your browser does not support this video format. Try using a different browser.
</h4>
</div>
<div class="video-player-post"></div>
<div class="closed-captions"></div>
<div class="video-controls is-hidden">
<div>
<div class="vcr"><div class="vidtime">0:00 / 0:00</div></div>
<div class="secondary-controls"></div>
</div>
</div>
</div>
</div>
<div class="focus_grabber last"></div>
</div>
</div>
</div>
<div class="vert vert-1" data-id="block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@done+block@2b4c51f8b6584b6382c532076614a140">
<div class="xblock xblock-public_view xblock-public_view-done" data-course-id="course-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1" data-block-type="done" data-usage-id="block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@done+block@2b4c51f8b6584b6382c532076614a140" data-request-token="efc7b584028911efabb30242ac12000b" data-graded="True" data-has-score="True">
<div class="page-banner"><div class="alert alert-warning"><span class="icon icon-alert fa fa fa-warning" aria-hidden="true"></span><div class="message-content">Completion is only accessible to enrolled learners. Sign in or register, and enroll in this course to view it.</div></div></div>
</div>
</div>
<div class="vert vert-2" data-id="block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@discussion+block@6aa12ada55974777baba11bfb128a03c">
<div class="xblock xblock-public_view xblock-public_view-discussion" data-course-id="course-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1" data-block-type="discussion" data-usage-id="block-v1:OpenSecurityTraining2+Arch4021_intro_UEFI+2023_v1+type@discussion+block@6aa12ada55974777baba11bfb128a03c" data-request-token="efc7b584028911efabb30242ac12000b" data-graded="True" data-has-score="False">
<div class="page-banner"><div class="alert alert-warning"><span class="icon icon-alert fa fa fa-warning" aria-hidden="true"></span><div class="message-content">Discussion is only accessible to enrolled learners. Sign in or register, and enroll in this course to view it.</div></div></div>
</div>
</div>
</div>
<script type="text/javascript">
(function (require) {
require(['/static/js/dateutil_factory.be68acdff619.js?raw'], function () {
require(['js/dateutil_factory'], function (DateUtilFactory) {
DateUtilFactory.transform('.localized-datetime');
});
});
}).call(this, require || RequireJS.require);
</script>
<script>
function emit_event(message) {
parent.postMessage(message, '*');
}
</script>
</div>