diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..0613b38 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,10 @@ +* text=auto !eol +*.scala text eol=lf +*.sc text eol=lf +*.sh text eol=lf +*.properties text eol=lf +*.bat text eol=crlf +*.cmd text eol=crlf +*.ps1 text eol=crlf +*.mp4 filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cb2549e --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +/.idea +/out +/log +scratch.sc diff --git a/bin/presentasi.cmd b/bin/presentasi.cmd new file mode 100755 index 0000000..91e19d2 --- /dev/null +++ b/bin/presentasi.cmd @@ -0,0 +1,1493 @@ +::#! 2> /dev/null # +@ 2>/dev/null # 2>nul & echo off & goto BOF # +if [ -z ${SIREUM_HOME} ]; then # + echo "Please set SIREUM_HOME env var" # + exit -1 # +fi # +exec ${SIREUM_HOME}/bin/sireum slang run "$0" "$@" # +:BOF +setlocal +if not defined SIREUM_HOME ( + echo Please set SIREUM_HOME env var + exit /B -1 +) +%SIREUM_HOME%\bin\sireum.bat slang run "%0" %* +exit /B %errorlevel% +::!# +// #Sireum + +import org.sireum._ +import org.sireum.presentasi._ +import org.sireum.presentasi.Presentation._ + +val home = Os.slashDir.up.canon +val resources = home / "jvm" / "src" / "main" / "resources" +val image = resources / "image" +val video = resources / "video" +val audio = resources / "audio" + +val delay = 700 + +val isRyan: B = Os.cliArgs match { + case ISZ(string"Azure", "default", _*) => T + case _ => F +} + +val sireumW = "Seereum" + +val logikaW = "Logeeka" + +val hamrW = "Hammer" + +val camkesW = "Cam Keys" + +val intellijW = "IntelliJay" + +val sel4W: String = if (isRyan) "S.E.L. 4" else "essy L4" + +val aadlW: String = if (isRyan) "A.A.D.L." else "A A D L" + +val dodW: String = if (isRyan) "DoD" else "D O D" + +val smtW: String = if (isRyan) "SMT" else "S M T" + +val sbirW = "sibber" + +val unswW: String = if (isRyan) "U.N.S.W." else "U N S W" + +val cW: String = if (isRyan) "C" else "see" + +val ideW: String = if (isRyan) "I.D.E." else "I D E" + +val intro = Slide( + path = (image / "01-intro.png").string, + delay = 0, + text = + s""" + [1000] + Hello! + [250] + We'd like to share with you some tools that we are developing for building verified applications on top of $sel4W. + [250] + This work is funded primarily by a DARPA Phase 2 $sbirW, along with other related $dodW projects. + """ +) + +val vision1 = Slide( + path = (image / "02-vision-01-sel4-1.png").string, + delay = 0, + text = + s""" + This conference series got started due to the success of $sel4W, whose formal verification + has been a significant success story in the formal methods and security communities. + [250] + In this talk, we are interested in exploring how we can continue to build on this great foundation. + """ +) + +val vision2 = Slide( + path = (image / "02-vision-02-sel4-2.png").string, + delay = 0, + text = + s""" + In particular, how can we provide tools to build verified applications on top of the $sel4W verified infrastructure? + What are characteristics of the programming languages that we might use? + [250] + $sel4W is written in $cW. Can we, or should we, use something else for applications? + [250] + What types of formal methods should be used? + [250] + $sel4W verification translated C code into representations in the Isabelle theorem prover, + and verification was done within the theorem prover itself. Might we do something different for applications? + [250] + Moreover, development is not just getting code right, it involves connecting to designs requirements + and a host of other artifacts, so how should we accomplish that? + [250] + And how should we engineer our verification tools for continuous integrated delivery of formal verification? + """ +) + +val vision3 = Slide( + path = (image / "02-vision-03-hamr-1.png").string, + delay = 0, + text = + s""" + In a tutorial session on Monday, we presented part of our vision for building verified applications on $sel4W. + [250] + In particular, we showed how our $hamrW framework, developed under the DARPA CASE program with + Collins Aerospace and $unswW, enables engineers to design their systems using the $aadlW + industry standard modeling language, that provides key abstractions for building analyzable real-time embedded systems. + """ +) + +val vision4 = Slide( + path = (image / "02-vision-04-hamr-2.png").string, + delay = 0, + text = + s""" + To summarize, $hamrW enables engineers to use those models to automatically configure $sel4W to enforce spatial and temporal partitioning. + """ +) + +val vision5 = Slide( + path = (image / "02-vision-05-hamr-3.png").string, + delay = -500, + text = + s""" + [-800] + It also generates application code skeletons to help developers program their application logic in a way that guarantees that the system is aligned with the structure and semantics of the design. + """ +) + +val vision6 = Slide( + path = (image / "02-vision-06-hamr-4.png").string, + delay = -500, + text = + s""" + [-800] + and then automatically generate system builds for deployment on $sel4W + """ +) + +val vision7 = Slide( + path = (image / "02-vision-07-hamr-aspects-1.png").string, + delay = 0, + text = + s""" + To a large extent, $hamrW already provides some key aspects of our vision for verified application development on $sel4W + """ +) + +val vision8 = Slide( + path = (image / "02-vision-08-hamr-aspects-2.png").string, + delay = -500, + text = + s""" + [-800] + Firstly, it connects $sel4W deployments to formal and analyzable architecture models in a standardized modeling language + """ +) + +val vision9 = Slide( + path = (image / "02-vision-09-hamr-aspects-3.png").string, + delay = -500, + text = + s""" + [-800] + System builds are organized, in part via the model, as an easy-to-understand and exchangeable visual artifact that + provides a true picture of the system’s structure + """ +) + +val vision10 = Slide( + path = (image / "02-vision-10-hamr-aspects-4.png").string, + delay = -500, + text = + s""" + [-800] + Safety and security aspects such as partitioning, information flow controls, and correctness properties + reflected in the model, are guaranteed to be manifested in the deployed system + """ +) + +val vision11 = Slide( + path = (image / "02-vision-11-hamr-aspects-5.png").string, + delay = -500, + text = + s""" + [-800] + System updates, reflected as changes to the model, can be rapidly reflected as a change + in the build and deployment via automated code regeneration, which is a DARPA CASE theme + """ +) + +val vision12 = Slide( + path = (image / "02-vision-12-pl-1.png").string, + delay = 0, + text = + s""" + Given that $hamrW is beginning to address connections to designs models and the broader development context, + in this talk, we want to share some of our vision for the remaining aspects circled below. + """ +) + +val vision13 = Slide( + path = (image / "02-vision-13-pl-2.png").string, + delay = 0, + text = + s""" + On Monday, we illustrated that $hamrW application logic can be programmed in $cW to help start the integration + with legacy development practices. + [250] + However, our vision for programming new high-assurance applications leverages capabilities afforded by + more modern languages. + [250] + In particular, developing high assurance applications for $sel4W + can benefit from modern languages that have the following characteristics. + [250] + It is amenable to highly-automated, usable, and scalable formal verification, and + effective for programming embedded safety and security critical systems. + [250] + It integrates easily with existing languages such as $cW, and + with model-driven development as emphasized by the $dodW Digital Transformation. + """ +) + +val vision14 = Slide( + path = (image / "02-vision-14-tool.png").string, + delay = 0, + text = + s""" + So today we are going to tell you about out vision for this space based on a programming language called + Slang, and an accompanying verification environment called $logikaW. + [250] + These tools are all part of Kansas State’s $sireumW high assurance system engineering platform. + """ +) + +val slang1 = Slide( + path = (image / "03-slang-1.png").string, + delay = 0, + text = + s""" + Slang is a safety critical subset of Scala with a simplified semantics. + [250] + Due to Scala's tight relation with Java, Slang benefits from the Java and Scala ecosystems which have + strong tool support such as integrated development environments. + [250] + Moreover, Slang can be cross-compiled to Javascript via Scala J S, which is handy to develop + rich web applications such as standalone and browsable interactive analysis reports and system simulations. + [250] + In addition, Slang can also be compiled ahead-of-time to native using Oracle's Graal V M, which avoids + JVM boot up time and reduces footprint costs. + [250] + Slang offers a clean and unified facility to interoperate with existing libraries and host languages + on all of its supported target platforms. + [250] + Another reason for building on Scala is that it has an extensible compiler architecture, + and this enabled us to insert custom program transformations phases in the standard + Scala compiler to implement the simplified Slang semantics. + """ +) + +val slang2 = Slide( + path = (image / "03-slang-2.png").string, + delay = 0, + text = + s""" + Due to its careful design, Slang is also effective for programming embedded systems. + [250] + The Slang embedded subset can be translated to $cW without garbage collection runtime, + which helps ensure predictable run-time behavior. + [250] + For achieving a higher level of assurance, the generated $cW code can be compiled + using the CompCert Verified $cW compiler. + [250] + The generated $cW code can also be used to generate hardware by using + available high level hardware synthesis toolchains. + """ +) + +val slang3 = Slide( + path = (image / "03-slang-3.png").string, + delay = 0, + text = + s""" + To support formal verification, + Slang includes both developer-friendly contract and proof languages, + which have full support within the development environment. + """ +) + +val slang4 = Slide( + path = (image / "03-slang-4.png").string, + delay = 0, + text = + s""" + To support automated verification of contracts and proofs, + Slang is designed from the outset for program verification and other safety + and security analyses. + [250] + Simplification of language features is key to reduce the developer's reasoning burden and formal analysis costs. + [250] + For example, we restrict where aliasing can be introduced to a single programming language + construct, that is, method invocation, which is also the typical target boundary for + compositional reasoning. + [250] + Thus, aliasing can be analyzed hand-in-hand with other program properties of interests. + """ +) + +val logika1 = Slide( + path = (image / "04-logika-1.png").string, + delay = 0, + text = + s""" + To support developer-friendly Slang verification, + $logikaW provides code-level $ideW integrated verification of Slang's contract and proof languages. + """ +) + +val logika2 = Slide( + path = (image / "04-logika-2.png").string, + delay = 0, + text = + s""" + Verification is highly automated by using a suite of state-of-art $smtW solvers + that work in the background to provide continuous delivery of program checking + """ +) + +val logika3 = Slide( + path = (image / "04-logika-3.png").string, + delay = 0, + text = + s""" + This continuous, always on, verification is enabled by a significant tool engineering effort. + In particular, $logikaW is able to provide smart incremental checking that is triggered by editor + actions. + """ +) + +val logika4 = Slide( + path = (image / "04-logika-4.png").string, + delay = 0, + text = + s""" + This incremental checking is key to scalability. + [250] + When updates are made in the editor, it enables $logikaW to re-check only the code changed. + [250] + Scalability is also enabled by a powerful server-based architecture that provides massive + parallelization of the formal verification. + [250] + This provides a foundation for scalable cloud-based delivery of verification resources for on-demand + servicing of verification needs. + """ +) + +val logika5 = Slide( + path = (image / "04-logika-5.png").string, + delay = 0, + text = + s""" + Finally, since we realize that not all verification can be automated, + $logikaW provides what we call deep-dive gateways in both the verification + tool and in the proof notations to allow expert-level engineers to + drill down into verification details and to introduce + manual proof engineering when needed. + """ +) + +val logikaThemes1 = Slide( + path = (image / "05-logika-themes-1.png").string, + delay = 0, + text = + s""" + We'll now provide a series of demos illustrating Logika Themes. + """ +) + +val logikaThemes2 = Slide( + path = (image / "05-logika-themes-2.png").string, + delay = 0, + text = + s""" + Let's start with these first three themes. + Democratization of Formal Methods, + Integration into Industrial Tools, and + Continuous Delivery of Formal Verification. + """ +) + +val demoLogika01 = Video( + path = (video / "06-demo-logika-intro.mp4").string, + delay = 0, + volume = 0.0, + rate = 1.0, + start = 0.0, + end = 0.0, + textOpt = Some( + s""" + We'll see how these are addressed by integrating Logika into $intellijW, + the most widely used industrial $ideW for Scala development. + [250] + $intellijW provides extension points for customizing its Scala type checker, so we can adapt it to work nicely with Slang. + """ + ) +) + +val demoLogika02 = Video( + path = (video / "06-demo-logika.mp4").string, + delay = -3000, + volume = 0.0, + rate = 1.0, + start = 15066.7, + end = 24000.0, + textOpt = Some( + s""" + Slang analysis engines, such as $logikaW, runs as a $sireumW micro service in the background. + [250] + Here, we have some example code with data structures inspired from an unmanned aerial vehicle mission control system. + [250] + The example declares an immutable Waypoint datatype that holds coordinate information. + [250] + A mission typically consists of a sequence of waypoints such as what is stored in S one, which is of mutable sequence type. + [250] + As $logikaW works, it decorates program editors to communicate its analysis feedback. + """ + ) +) + +val demoLogika03 = Video( + path = (video / "06-demo-logika.mp4").string, + delay = 0, + volume = 0.0, + rate = 1.0, + start = 26500.0, + end = 30000.0, + textOpt = Some( + s""" + It decorates each statement with its precondition state claims that it computes, + """ + ) +) + +val demoLogika04 = Video( + path = (video / "06-demo-logika.mp4").string, + delay = -2000, + volume = 0.0, + rate = 1.5, + start = 30000.0, + end = 47000.0, + textOpt = Some( + s""" + [${-2 * delay}] + which aids program reasoning while also serving as auditable evidence. + [250] + The state claims are naturally represented at the Slang source level, + [0] + and as you can observe, the claims are intuitive as there is no heap object representation, pointers, or references. + [250] + This is the direct result of Slang language simplification, which both reduces our reasoning mental model burden + and helps scale Slang analyses. + """ + ) +) + +val demoLogika05 = Video( + path = (video / "06-demo-logika.mp4").string, + delay = 0, + volume = 0.0, + rate = 1.0, + start = 54500.0, + end = 57500.0, + textOpt = Some( + s""" + $logikaW also decorates the editors with verification condition checking results, in this case, by using $smtW query solving. + [250] + Each query is annotated with solving result, as well as its solving parameters, which can be configured by users. + """ + ) +) + +val demoLogika06 = Video( + path = (video / "06-demo-logika.mp4").string, + delay = 0, + volume = 0.0, + rate = 1.0, + start = 63000.0, + end = 69000.0, + textOpt = Some( + s""" + Each sequence or array access is implicitly bound-checked to ensure that it does not produce runtime error or buffer overflow. + """ + ) +) + +val demoLogika07 = Video( + path = (video / "06-demo-logika.mp4").string, + delay = 0, + volume = 0.0, + rate = 1.0, + start = 69000.0, + end = 80000.0, + textOpt = Some( + s""" + Suppose that we seed an out of bound access. $logikaW analysis in the background continuously give direct verification feedback upon code change. + [250] + We believe such seamless integration into typical development workflow is key to formal method success. + """ + ) +) + +val demoLogika08 = Video( + path = (video / "06-demo-logika.mp4").string, + delay = 0, + volume = 0.0, + rate = 1.0, + start = 92000.0, + end = 102000.0, + textOpt = Some( + s""" + As issues are fixed, $logikaW re-verifies the code and can confirm that such issues have been properly addressed. + [250] + We like this line editor decoration feedback mechanism because it gives a sense of analysis coverage, + which feels familiar to the line coverage information in testing. + """ + ) +) + +val demoLogika09 = Video( + path = (video / "06-demo-logika.mp4").string, + delay = 0, + volume = 0.0, + rate = 1.0, + start = 103750.0, + end = 118250.0, + textOpt = Some( + s""" + Let us now start adding some explicit assertions to confirm our understanding of the program behaviors. + [250] + For example, we can assert that the first element of S two is a waypoint holding the coordinate one, two, and three, as assigned at line fourteen. + [250] + Obviously, such assertion should hold and it is confirmed by $logikaW as the feedback decoration does not indicate that there is an issue. + """ + ) +) + +val demoLogika10 = Video( + path = (video / "06-demo-logika.mp4").string, + delay = 0, + volume = 0.0, + rate = 1.0, + start = 118250.0, + end = 135000.0, + textOpt = Some( + s""" + Suppose that we assert the same for the first element of S one. + [250] + This is where Slang differs from Scala or Java where a deep copy of S one was made at line eleven before assigning to S two. + [250] + Thus, the assertion is invalid. + """ + ) +) + +val demoLogika11 = Video( + path = (video / "06-demo-logika.mp4").string, + delay = 0, + volume = 0.0, + rate = 1.0, + start = 142500.0, + end = 153500.0, + textOpt = Some( + s""" + We can confirm such behavior by running the program, + by clicking the green play icon at the top of the program editor, + and it will trigger code compilation. + [250] + Once it finishes, the resulting code is then run, which in this case, triggers an assertion error, as $logikaW has warned us. + [250] + This illustrates how one can test and prove their code in the same $sireumW verification environment. + """ + ) +) + +val demoLogika12 = Video( + path = (video / "06-demo-logika.mp4").string, + delay = 0, + volume = 0.0, + rate = 1.0, + start = 161500.0, + end = 173750.0, + textOpt = Some( + s""" + Due to the deep copy, the value of S one should not be affected, and it is the same as what assigned at line ten. + [250] + We can ask $logikaW to confirm it for us by asserting it. + [250] + One might think that such deep copying might produce less than ideal performant code, + however, in many cases, the performance differences do not matter as much as what we might have thought. + [250] + On cases where they do matter, there are effective programming patterns and principles that can be applied, + which are discussed in the Slang Isola paper appeared last year. + """ + ) +) + +val demoLogika13 = Video( + path = (video / "06-demo-logika.mp4").string, + delay = 0, + volume = 0.0, + rate = 2.0, + start = 173750.0, + end = 179500.0, + textOpt = Some( + s""" + Let us now look at more interesting properties. + """ + ) +) + +val demoLogika14 = Video( + path = (video / "06-demo-logika.mp4").string, + delay = 0, + volume = 0.0, + rate = 1.0, + start = 181000.0, + end = 197500.0, + textOpt = Some( + s""" + I am going to copy and paste some prepared code to save time. + + [250] + You can observe that the added methods have some contract annotations. + [250] + Both inZone and W P diff are strictly pure methods, which do not make side effects. + [250] + Such methods can be directly used in contract specifications, as shown in move waypoint X, + which has the typical pre and post conditions. + [250] + Move waypoint X itself is a pure method, which means that + there is no observable side-effect from the outside of the method. + [250] + As can be observed, we leverage Scala syntax to express specification. + The Contract specification at line 28 is implemented by using a Scala macro + which is erased before code generation, thus, + the specification does not affect the code runtime behaviors. + [250] + In the future, it is possible to introduce a runtime assertion checker tool + that weaves in contracts as assertions for testing purposes, or dynamic enforcement. + """ + ) +) + +val education = Slide( + path = (image / "07-education.png").string, + delay = 0, + text = + s""" + Regarding democratization of formal methods, it is interesting to note that + the first version of $logikaW, which was much less ambitious, + was developed to support teaching of a required undergraduate course at Kansas State + on logic and program verification. + """ +) + +val educationWeb = Video( + path = (video / "08-education-web.mp4").string, + delay = -2000, + volume = 0.0, + rate = 1.00, + start = 0.0, + end = 0.0, + textOpt = Some( + s""" + It has proven very fruitful. For the past five years, the tool has been used to teach + over one thousand K-State undergraduates. + [250] + Moreover, $logikaW has been adopted by others, for example, to teach undergraduate and + graduate courses at Aarhus University in Denmark. + [250] + The accompanying course notes are publicly available online. + [250] + Here you can observe the manual program proofs which we then switch students to automated + verification via symbolic execution and SMT2 solving. + [250] + This teaching experience demonstrates that it is possible to lower the barrier of entry + for proving program safety and security even to the undergraduate level, + with proper training and good tool support. + """ + ) +) + +val logikaThemes3 = Slide( + path = (image / "09-logika-themes-incremental.png").string, + delay = 0, + text = + s""" + Now let's consider the theme of incremental checking by first discussing + some of the details of the $sireumW code base. + """ +) + +val codebase1 = Slide( + path = (image / "10-codebase-1.png").string, + delay = 0, + text = + s""" + Up to this point, we’ve been demoing Slang and $logikaW on some small script files. + [250] + So you may be wondering, does all of this work “at scale”? + [250] + The answer is Yes! + """ +) + +val codebase2 = Slide( + path = (image / "10-codebase-2.png").string, + delay = 0, + text = + s""" + In addition to applying Slang and $logikaW with our industrial partners on various $dodW projects, + we also validate the design and scalability of Slang tooling by applying them when developing the $sireumW code base itself, + which includes Slang, $hamrW, and $logikaW. + [250] + The code base is around two hundred and ten thousand lines of code, with eighty five percent of the code base, + or around one hundred and eighty thousand lines of code, is written in Slang. + [250] + So not only does that validate the effectiveness of Slang for coding large applications, + """ +) + +val codebase3 = Slide( + path = (image / "10-codebase-3.png").string, + delay = -2000, + text = + s""" + [-1500] + it means that we can also apply $logikaW to verify portions of $sireumW, + including our $hamrW code generation pipelines for $sel4W as well as the $logikaW implementation itself. + """ +) + +val codebase4 = Slide( + path = (image / "10-codebase-4.png").string, + delay = 0, + text = + s""" + This provides a pathway for eventually mechanizing the proofs of correctness + of our own verification, analysis, and code generation tools. + [250] + We're currently applying these idea to $hamrW infrastructure code generated for $sel4W. + """ +) + +val codebase5 = Slide( + path = (image / "10-codebase-5.png").string, + delay = 0, + text = + s""" + We're now going to demonstrate that the same continuous integrated verification that worked for small programs + also works when $logikaW is applied to this large code base. + [250] + This is possible due to our carefully engineered approach for incremental and focused checking. + """ +) + +val demoOption1 = Video( + path = (video / "06-demo-logika.mp4").string, + delay = 0, + volume = 0.0, + rate = 3.0, + start = 366000.0, + end = 370000.0, + textOpt = Some( + s""" + Let's look at the implementation of the option type. + [250] + Option is part of the Slang runtime library that is part of $sireumW. + """ + ) +) + +val demoOption2 = Video( + path = (video / "06-demo-logika.mp4").string, + delay = 0, + volume = 0.0, + rate = 1.0, + start = 380000.0, + end = 380500.0, + textOpt = Some( + s""" + Here you can see that the Slang implementations include some very basic contracts. + [250] + For this example, the size of the contract and associated code is not important. + """ + ) +) + +val demoOption3 = Video( + path = (video / "06-demo-logika.mp4").string, + delay = -1000, + volume = 0.0, + rate = 1.0, + start = 380500.0, + end = 385000.0, + textOpt = Some( + s""" + The main point is that $logikaW verification will be triggered by + edits in the file to start the checking process. + [250] + Then, the $logikaW incremental analysis framework will use module dependency information for + the entire code base and figure out a minimal amount of work to verify the body of this method. + [250] + You just saw a moment ago that $logikaW was able to quickly conclude its checking to find a contract violation in less than a second. + """ + ) +) + +val demoOption4 = Video( + path = (video / "06-demo-logika.mp4").string, + delay = -1000, + volume = 0.0, + rate = 1.0, + start = 386250.0, + end = 390000.0, + textOpt = Some( + s""" + Then, when we correct the error, $logikaW can conclude almost immediately that method satisfies its contract. + """ + ) +) + +val codebaseGraph = Slide( + path = (image / "11-codebase-graph.png").string, + delay = 0, + text = + s""" + [1500] + $logikaW incremental checking leverages project codebase modularity for scaling its analysis + and optimizing user interactions. + [250] + Just like an incremental build tool, it understands the dependence relationships between modules + as captured in the system's build specification. For example, the modules and + dependences reflected in the $sireumW code base build specification are diagrammed here. + [250] + Using this information, when a file is edited or a current point in the program + is selected for verification, $logikaW can avoid examining code not needed for the + verification of the current section of code. + """ +) + +val codebaseIncremental1 = Video( + path = (video / "12-codebase-incremental.mp4").string, + delay = 0, + volume = 0.0, + rate = 1.0, + start = 0.0, + end = 1700.0, + useVideoDuration = T, + textOpt = Some( + s""" + Let me describe how it works, intuitively. + """ + ) +) + +val codebaseIncremental2 = Video( + path = (video / "12-codebase-incremental.mp4").string, + delay = 0, + volume = 0.0, + rate = 1.0, + start = 1700.0, + end = 2000.0, + textOpt = Some( + s""" + [750] + When a particular file such as Option is analyzed + """ + ) +) + +val codebaseIncremental3 = Video( + path = (video / "12-codebase-incremental.mp4").string, + delay = -250, + volume = 0.0, + rate = 1.0, + start = 2000.0, + end = 5000.0, + textOpt = Some( + s""" + [${-2 * delay}] + $logikaW starts at the root modules and works downward in the project module dependency graph. + """ + ) +) + +val incremental1 = Slide( + path = (image / "13-incremental-1.png").string, + delay = -2500, + text = + s""" + [${-2 * delay}] + until it finds the module where the file resides. + """ +) + +val incremental2 = Slide( + path = (image / "13-incremental-2.png").string, + delay = 0, + text = + s""" + Along the way, $logikaW only lightly analyzes the relevant + modules. + [250] + That is, $logikaW employs the Slang frontend to parse and + outline class, field, and method type signatures for all + files in the modules, without fully type checking method bodies. + """ +) + +val incremental3 = Slide( + path = (image / "13-incremental-3.png").string, + delay = 0, + text = + s""" + Only the Option file is fully type checked, which then + verified. + [250] + In the context where user is editing a particular method, + the process is further optimized by focusing full type + checking and verification to that method. + """ +) + +val incremental4 = Slide( + path = (image / "13-incremental-4.png").string, + delay = 0, + text = + s""" + Furthermore, $logikaW aggressively caches intermediate + analysis results to speed up subsequent analyses. + [250] + For example, module-level file type information is soundly + cached by file fingerprinting. + [250] + $smtW queries are also cached to speed up re-verification. + [250] + We found these to be very effective, especially so for + providing continuous verification in an $ideW. + [250] + For less capable machines, $logikaW offers ways to tone + down its caching strategies. + """ +) + +val hamrAbstraction1 = Slide( + path = (image / "14-hamr-abstraction-1.png").string, + delay = 0, + text = + s""" + So let’s start making a stronger connection to $sel4W by returning to this diagram from the beginning of the talk. + """ +) + +val hamrAbstraction2 = Slide( + path = (image / "14-hamr-abstraction-2.png").string, + delay = 0, + text = + s""" + We now want to show a demo where we use $hamrW, with components written in Slang, which can then be translated to C. + [250] + Recall that if you wish, the Slang code can first be tested in multiple platforms, including JVM and natively in Linux. + [250] + Also, you have the option of compiling the C with the verified CompCert compiler, which guarantees that the produced binary + behaviors faithfully reflect the C source's. + """ +) + +val hamrAbstraction3 = Slide( + path = (image / "14-hamr-abstraction-3.png").string, + delay = 0, + text = + s""" + Moreover, we can use the Slang Contracts and Logika verification to formally verify correctness properties of the + application code. + [250] + However, the story doesn’t end there. We can keep scaling up through the abstraction stack. + """ +) + +val hamrAbstraction4 = Slide( + path = (image / "14-hamr-abstraction-4.png").string, + delay = -delay, + text = + s""" + [-$delay] + On the GUMBO project, we are developing contract language for $aadlW that integrates features from other contract languages such as + AGREE and BLESS. This gives us the ability to have formally verified designs, also supported by $logikaW verification. + $hamrW is being extended to automatically translate GUMBO contracts down into Slang contracts so that $logikaW + can automatically prove that component implementations conform to model-level specifications. + """ +) + +val tempControl1 = Slide( + path = (image / "15-temp-control-1.png").string, + delay = 0, + text = + s""" + Here’s the example system that we used in our Monday tutorial. + [250] + We have a temperature sensor component that sends temperature values to a temperature controller. + The controller will compare the temperature against some set points provided by an operator + to determine if it should send commands to turn off or turn on the fan. + """ +) + +val tempControl2 = Slide( + path = (image / "15-temp-control-2.png").string, + delay = 0, + text = + s""" + Using $hamrW code generation, the application code for each of these components will be automatically + deployed to separate $camkesW components to ensure partitioning when deployed to $sel4W. + """ +) + +val tempControl3 = Slide( + path = (image / "15-temp-control-3.png").string, + delay = 0, + text = + s""" + Using the GUMBO contract language, we'd like to be able to capture some of the important control + laws of the component. For example, if we get an updated temperature, what command + should we send to the fan to change its state? + """ +) + +val gumbo1 = Slide( + path = (image / "16-gumbo-1.png").string, + delay = 0, + text = + s""" + Here is the GUMBO contract prototype that specifies the + temperature controller's behaviors. + """ +) + +val gumbo2 = Slide( + path = (image / "16-gumbo-2.png").string, + delay = 0, + text = + s""" + The example contract consists of several cases + that reflect the different operating scenarios derived from + the system requirements. + [250] + For example, the first requirement indicates that if the sensed + temperature is less than the preset range, then the fan should + be turned off. + [250] + In addition to contract cases with frame conditions illustrated + here, GUMBO includes other specification constructs such as + component state and port invariants that we do not have time to discuss in this presentation. + """ +) + +val demoTempControl1 = Video( + path = (video / "17-demo-temp-control.mp4").string, + delay = 0, + volume = 0.0, + rate = 1.0, + start = 0.0, + end = 333.0, + textOpt = Some( + s""" + So, what you are seeing here on the screen is the application code that the user has written for the temp control component. + [250] + The code has been placed inside of a template generated by $hamrW that also includes + a contract auto-generated from the gumbo specification in the $aadlW model. + """ + ) +) + +val demoTempControl2 = Video( + path = (video / "17-demo-temp-control.mp4").string, + delay = -5000, + volume = 0.0, + rate = 1.0, + start = 333.0, + end = 3000.0, + textOpt = Some( + s""" + $logikaW has already automatically checked that the code conforms to contract. + """ + ) +) + +val demoTempControl3 = Video( + path = (video / "17-demo-temp-control.mp4").string, + delay = 0, + volume = 0.0, + rate = 1.0, + start = 6000.0, + end = 10000.0, + textOpt = Some( + s""" + If we introduce a bug in the code by sending out the wrong command to the fan, + $logikaW is able to immediately detect that contract violation. + """ + ) +) + +val demoTempControl4 = Video( + path = (video / "17-demo-temp-control.mp4").string, + delay = 0, + volume = 0.0, + rate = 1.0, + start = 10000.0, + end = 14333.0, + textOpt = Some( + s""" + A problem marker and a tool tip shows us the particular clause of the contract that has been violated. + """ + ) +) + +val demoTempControl5 = Video( + path = (video / "17-demo-temp-control.mp4").string, + delay = 0, + volume = 0.0, + rate = 1.0, + start = 14500.0, + end = 0.0, + textOpt = Some( + s""" + When the bug is removed, $logikaW is able to immediately confirm that contract is satisfied. + """ + ) +) + +val parallel0 = Slide( + path = (image / "18-logika-themes-parallel.png").string, + delay = 0, + text = + s""" + Let's now consider the Parallelization and Server-based Deployment theme. + """ +) + +val parallel1 = Slide( + path = (image / "19-parallel-1.png").string, + delay = 0, + text = + s""" + One key observation is that, as $logikaW works over the + project module dependency graph, modules that are at the same + depth level can be verified independently in parallel. + """ +) + +val parallel2 = Slide( + path = (image / "19-parallel-2.png").string, + delay = 0, + text = + s""" + Moreover, $logikaW's reasoning is compositional, thus, + each program unit such as a method, or even each contract case + of a method, can be verified in parallel. + """ +) + +val parallel3 = Slide( + path = (image / "19-parallel-3.png").string, + delay = 0, + text = + s""" + In the future, it is also possible to verify all project modules + using different computing nodes, for example, + in a cloud infrastructure to provide continuous verification + with on-demand scaling of resources. + [250] + In such setup, each computing node can also provide parallel + verification. + [250] + We believe parallelization and distributed analyses hold + a great promise to help tackle scalability issues in + applying formal methods. + """ +) + +val parallel4 = Slide( + path = (image / "19-parallel-4.png").string, + delay = 0, + text = + s""" + It is especially so when considering the trend towards + remote development using a thin client, + or even a browser that only requires a minimal setup. + """ +) + +val parallel5 = Slide( + path = (image / "19-parallel-5.png").string, + delay = 0, + text = + s""" + Now, allow me to demonstrate with an i-pad as a thin client + connected to a server with 80 cores. + """ +) + +val demoLegion0 = Video( + path = (video / "20-demo-logika-legion.mp4").string, + delay = -1000, + volume = 0.0, + rate = 1.0, + start = 0.0, + end = 500.0, + textOpt = Some( + s""" + Here is an i-pad with the Safari browser on the left-hand side. + """ + ) +) + +val demoLegion1 = Video( + path = (video / "20-demo-logika-legion.mp4").string, + delay = 0, + volume = 0.0, + rate = 1.0, + start = 0.0, + end = 2000.0, + textOpt = Some( + s""" + The browser is connected to a headless instance of the $intellijW based + $sireumW integrated verification environment, running on one of our research + group's Linux servers at K-State, called legion. + [250] + That is, the headless $sireumW server in legion projects its graphical user + interface through the usual web protocol, thus, any authenticated machine + with a browser can be used to interact with it. + """ + ) +) + +val demoLegion2 = Video( + path = (video / "20-demo-logika-legion.mp4").string, + delay = 0, + volume = 0.0, + rate = 1.0, + start = 2000.0, + end = 4000.0, + textOpt = Some( + s""" + This particular demo uses the building temperature control example generated + by hammer, with gumbo contracts presented earlier already translated as Slang + contracts. + [250] + On the right-hand side is a terminal connected to legion, which is used to + display legion's C P U and memory loads using H top. + """ + ) +) + +val demoLegion3 = Video( + path = (video / "20-demo-logika-legion.mp4").string, + delay = -1000, + volume = 0.0, + rate = 1.0, + start = 9000.0, + end = 36000.0, + textOpt = Some( + s""" + As can be observed, legion has eighty cores with two terra-bytes ram. + [250] + Next, I will open the temperature controller component implementation, which will + trigger $logikaW verification, and you can observer how $logikaW put legion's + many cores to work. + """ + ) +) + +val demoLegion4 = Video( + path = (video / "20-demo-logika-legion.mp4").string, + delay = -500, + volume = 0.0, + rate = 1.0, + start = 36000.0, + end = 49000.0, + textOpt = None() +) + +val demoLegion5 = Video( + path = (video / "20-demo-logika-legion.mp4").string, + delay = -500, + volume = 0.0, + rate = 1.0, + start = 49000.0, + end = 60000.0, + textOpt = Some( + s""" + As can be observed, $logikaW parallel verification engine used as many cores as + needed for analyzing large codebases. + """ + ) +) + +val proofEngineering1 = Slide( + path = (image / "21-proof-engineering-1.png").string, + delay = 0, + text = + s""" + Finally, for the proof-engineering theme + """ +) + +val proofEngineering2 = Slide( + path = (image / "21-proof-engineering-2.png").string, + delay = -1000, + text = + s""" + [-1000] + we are not claiming to do anything significant from a theoretical point of view. + [250] + However, in practice, + we believe our approach for supporting proof scripts and manual proving steps directly in Slang + has some advantages. + """ +) + +val demoProof1 = Video( + path = (video / "06-demo-logika.mp4").string, + delay = 0, + volume = 0.0, + rate = 2.0, + start = 213000.0, + end = 214000.0, + textOpt = Some( + s""" + Here we see how we exploit Scala's syntax flexibility to also express proofs + directly in the program. + [250] + Some of the proof steps illustrate how we use Slang pure methods + to represent lemmas and theorems. + """ + ) +) + +val demoProof2 = Video( + path = (video / "06-demo-logika.mp4").string, + delay = 0, + volume = 0.0, + rate = 2.0, + start = 221500.0, + end = 234000.0, + textOpt = Some( + s""" + Because all the proof elements are first-class citizens in the programming language, + $intellijW refactoring works for Slang proofs as well. + [250] + After the refactoring, $logikaW ree checks the proof to make sure that it is still admittable. + [250] + Each Slang proof step has to either be uniquely labeled or numbered. + """ + ) +) + +val demoProof3 = Video( + path = (video / "06-demo-logika.mp4").string, + delay = -delay, + volume = 0.0, + rate = 1.25, + start = 245000.0, + end = 256000.0, + textOpt = Some( + s""" + [-$delay] + The numbering does not have to be in order, which is sometimes handy. + We do offer an automatic tool renumbering to tidy up Slang proof. + """ + ) +) + +val demoProof4 = Video( + path = (video / "06-demo-logika.mp4").string, + delay = 0, + volume = 0.0, + rate = 1.0, + start = 261250.0, + end = 272000.0, + textOpt = Some( + s""" + Each proof step in Slang has to be justified, and the justification implementation + should produce an understandable explanation on why it accepts the proof step's claim. + [250] + $logikaW provides an extensible facility to add and define justifications. + """ + ) +) + +val demoProof5 = Video( + path = (video / "06-demo-logika.mp4").string, + delay = -delay, + volume = 0.0, + rate = 1.0, + start = 273500.0, + end = 278000.0, + textOpt = Some( + s""" + [-$delay] + The premise justification is actually a method signature + declaration, whose implementation is provided via a $logikaW plug-in written in Slang. + [250] + Custom justifications that implement complex proof tactics can be defined using this extension mechanism. + [250] + Thus, to keep with our deep-dive gateway theme, while we advocate interactive theorem proving to be done directly in Slang so + that we have continuity of user experience, + custom justifications can be introduced to export $logikaW's verification conditions for expert users + to other theorem prover's input language. + """ + ) +) + +val conclusion = Slide( + path = (image / "22-conclusion.png").string, + delay = 1000, + text = + s""" + [1000] + In closing, in this talk, we have presented our envisioned approach using $logikaW, Slang, + hammer, and GUMBO, for developing high assurance $sel4W applications. + [250] + All of these tools are still currently being actively developed. + [250] + $logikaW in particular, is in its early development phase, + where we are still focusing on enlarging the coverage of + Slang's rich language features that the automated verification + engine can handle. + """ +) + +val end = Slide( + path = (image / "23-end.png").string, + delay = 1000, + text = + s""" + [1000] + Thank you all for attending. + """ +) + + +val presentation = Presentation.empty + + intro + + vision1 + vision2 + + vision3 + vision4 + vision5 + vision6 + + vision7 + vision8 + vision9 + vision10 + vision11 + + vision12 + vision13 + vision14 + + slang1 + slang2 + slang3 + slang4 + + logika1 + logika2 + logika3 + logika4 + logika5 + + logikaThemes1 + logikaThemes2 + + demoLogika01 + demoLogika02 + demoLogika03 + demoLogika04 + demoLogika05 + demoLogika06 + demoLogika07 + + demoLogika08 + demoLogika09 + demoLogika10 + demoLogika11 + demoLogika12 + demoLogika13 + demoLogika14 + + education + educationWeb + + logikaThemes3 + + codebase1 + codebase2 + codebase3 + codebase4 + codebase5 + + demoOption1 + demoOption2 + demoOption3 + demoOption4 + + codebaseGraph + codebaseIncremental1 + codebaseIncremental2 + codebaseIncremental3 + + incremental1 + incremental2 + incremental3 + incremental4 + + hamrAbstraction1 + hamrAbstraction2 + hamrAbstraction3 + hamrAbstraction4 + + tempControl1 + tempControl2 + tempControl3 + + gumbo1 + gumbo2 + + demoTempControl1 + demoTempControl2 + demoTempControl3 + demoTempControl4 + demoTempControl5 + + parallel0 + parallel1 + parallel2 + parallel3 + parallel4 + parallel5 + + demoLegion0 + demoLegion1 + demoLegion2 + demoLegion3 + demoLegion4 + demoLegion5 + + proofEngineering1 + proofEngineering2 + + demoProof1 + demoProof2 + demoProof3 + demoProof4 + demoProof5 + + conclusion + + end + +presentation(delay = 800).cli(Os.cliArgs) diff --git a/bin/project.cmd b/bin/project.cmd new file mode 100755 index 0000000..664a715 --- /dev/null +++ b/bin/project.cmd @@ -0,0 +1,34 @@ +::#! 2> /dev/null # +@ 2>/dev/null # 2>nul & echo off & goto BOF # +if [ -z ${SIREUM_HOME} ]; then # + echo "Please set SIREUM_HOME env var" # + exit -1 # +fi # +exec ${SIREUM_HOME}/bin/sireum slang run "$0" "$@" # +:BOF +setlocal +if not defined SIREUM_HOME ( + echo Please set SIREUM_HOME env var + exit /B -1 +) +%SIREUM_HOME%\bin\sireum.bat slang run "%0" %* +exit /B %errorlevel% +::!# +// #Sireum + +import org.sireum._ +import org.sireum.project.ProjectUtil._ +import org.sireum.project.Project + +val homeDir = Os.slashDir.up.canon + +val presentasi = moduleJvm( + id = "presentasi", + baseDir = homeDir, + jvmDeps = ISZ(), + jvmIvyDeps = ISZ() +) + +val project = Project.empty + presentasi + +projectCli(Os.cliArgs, project) \ No newline at end of file diff --git a/jvm/src/main/java/Presentasi.java b/jvm/src/main/java/Presentasi.java new file mode 100644 index 0000000..7ff3bd7 --- /dev/null +++ b/jvm/src/main/java/Presentasi.java @@ -0,0 +1,910 @@ +// Auto-generated by Sireum Presentasi +import javafx.application.Application; +import javafx.application.Platform; +import javafx.geometry.Rectangle2D; +import javafx.scene.Scene; +import javafx.scene.image.ImageView; +import javafx.scene.layout.StackPane; +import javafx.scene.media.MediaPlayer; +import javafx.scene.media.MediaView; +import javafx.stage.Screen; +import javafx.stage.Stage; +import javafx.util.Duration; + +import java.net.URL; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; + +public class Presentasi extends Application { + + public final static long TIMELINE_GRANULARITY = 1; + public final static long VSEEK_DELAY = 250; + public final static double TEXT_VOLUME = 1.0; + + public final static HashMap mediaMap = new HashMap(); + + public static javafx.scene.media.Media getJfxMedia(String uri) { + javafx.scene.media.Media r = mediaMap.get(uri); + if (r == null) { + r = new javafx.scene.media.Media(uri); + mediaMap.put(uri, r); + } + return r; + } + + public interface Media { + String getUri(); + boolean isReady(); + boolean hasError(); + long getDurationMillis(); + long getTimeline(); + } + + public final static class Image implements Media { + public final String uri; + public final ImageView imageView; + private final long timeline; + + public Image(final String path, final long timeline) { + this.uri = getResourceUri(path); + this.timeline = timeline; + this.imageView = new ImageView(new javafx.scene.image.Image(uri)); + } + + public String getUri() { return this.uri; } + + public boolean isReady() { + return true; + } + + public boolean hasError() { + return false; + } + + public long getDurationMillis() { + return 0L; + } + + public long getTimeline() { + return this.timeline; + } + } + + public final static class Sound implements Media { + public final String uri; + private final long timeline; + public MediaPlayer mediaPlayer; + private boolean ready = false; + private boolean error = false; + private long duration = 0L; + + public Sound(final String path, final long timeline) { + this.uri = getResourceUri(path); + this.timeline = timeline; + try { + this.mediaPlayer = new MediaPlayer(getJfxMedia(this.uri)); + this.mediaPlayer.setOnReady(() -> { + this.ready = true; + this.duration = (long) Math.ceil(mediaPlayer.getTotalDuration().toMillis()); + }); + this.mediaPlayer.setOnError(() -> this.error = true); + } catch (Throwable e) { + e.printStackTrace(); + System.err.println("Could not load: " + path); + System.err.flush(); + System.exit(-1); + } + } + + public String getUri() { return this.uri; } + + public boolean isReady() { + return this.ready; + } + + public boolean hasError() { + return this.error; + } + + public long getDurationMillis() { + return this.duration; + } + + public long getTimeline() { + return this.timeline; + } + } + + public final static class Video implements Media { + public final String uri; + private final long timeline; + public MediaView mediaView; + public final boolean muted; + public final double rate; + public final double startMillis; + public final double endMillis; + private boolean ready; + private boolean error; + private long duration; + + public Video(final String path, final long timeline, final boolean muted, final double rate, final double startMs, final double endMs) { + this.uri = getResourceUri(path); + this.timeline = timeline; + this.rate = rate; + this.startMillis = startMs; + this.endMillis = endMs; + this.muted = muted; + try { + final MediaPlayer mediaPlayer = new MediaPlayer(getJfxMedia(this.uri)); + mediaPlayer.setOnReady(() -> { + this.ready = true; + if (endMs > 0.0) { + this.duration = (long) Math.ceil(endMs - startMs); + } else { + this.duration = (long) Math.ceil(mediaPlayer.getTotalDuration().toMillis()); + } + }); + mediaPlayer.setOnError(() -> this.error = true); + this.mediaView = new MediaView(mediaPlayer); + } catch (Throwable e) { + e.printStackTrace(); + System.err.println("Could not load: " + path); + System.err.flush(); + System.exit(-1); + } + } + + public String getUri() { return this.uri; } + + public boolean isReady() { + return this.ready; + } + + public boolean hasError() { return this.error; } + + public long getDurationMillis() { + return this.duration; + } + + public long getTimeline() { + return this.timeline; + } + } + + private final LinkedList medias = new LinkedList<>(); + private Stage stage = null; + private long startTime = 0; + private int slideNo = 0; + private boolean fullScreen = true; + private double width = -1; + private double height = -1; + + public static String getResourceUri(final String path) { + try { + final URL url = Presentasi.class.getResource(path); + if (url != null) { + return url.toURI().toASCIIString(); + } + throw new RuntimeException("Could not load " + path); + } catch (final Throwable t){ + t.printStackTrace(); + } + Platform.exit(); + return null; + } + + @Override + public void init() { + final List args = getParameters().getRaw(); + if (args.size() > 0) { + for (String arg : getParameters().getRaw()) { + try { + int i = arg.indexOf('x'); + if (i >= 0) { + width = Integer.parseInt(arg.substring(0, i)); + height = Integer.parseInt(arg.substring(i + 1)); + fullScreen = false; + } else if (arg.charAt(0) == '#') { + slideNo = Integer.parseInt(arg.substring(1)); + startTime = 0; + } else { + startTime = Long.parseLong(arg); + slideNo = 0; + } + } catch (Throwable t) { + System.err.println("Invalid argument " + arg); + System.err.flush(); + Platform.exit(); + } + } + } + + final long t_0 = 0L; // 0 (00:00:00:000) + medias.add(new Image("/image/01-intro.png", t_0)); // #0 + final long t_1 = t_0 + 1800L; // 1800 (00:00:01:800) + medias.add(new Sound("/audio/azure/443ED6-Hello_.mp3", t_1)); + final long t_2 = t_1 + 1690L; // 3490 (00:00:03:490) + medias.add(new Sound("/audio/azure/60B52E-We_d_like_to_sh.mp3", t_2)); + final long t_3 = t_2 + 7018L; // 10508 (00:00:10:508) + medias.add(new Sound("/audio/azure/70E3B6-This_work_is_fu.mp3", t_3)); + final long t_4 = t_3 + 7232L; // 17740 (00:00:17:740) + medias.add(new Image("/image/02-vision-01-sel4-1.png", t_4)); // #1 + final long t_5 = t_4; + medias.add(new Sound("/audio/azure/934464-This_conference.mp3", t_5)); + final long t_6 = t_5 + 10450L; // 28190 (00:00:28:190) + medias.add(new Sound("/audio/azure/D0F8B9-In_this_talk__w.mp3", t_6)); + final long t_7 = t_6 + 6800L; // 34990 (00:00:34:990) + medias.add(new Image("/image/02-vision-02-sel4-2.png", t_7)); // #2 + final long t_8 = t_7; + medias.add(new Sound("/audio/azure/9DFD5B-In_particular__.mp3", t_8)); + final long t_9 = t_8 + 11818L; // 46808 (00:00:46:808) + medias.add(new Sound("/audio/azure/41B079-S_E_L__4_is_wri.mp3", t_9)); + final long t_10 = t_9 + 6874L; // 53682 (00:00:53:682) + medias.add(new Sound("/audio/azure/AA1B41-What_types_of_f.mp3", t_10)); + final long t_11 = t_10 + 3346L; // 57028 (00:00:57:028) + medias.add(new Sound("/audio/azure/FBFE77-S_E_L__4_verifi.mp3", t_11)); + final long t_12 = t_11 + 12658L; // 69686 (00:01:09:686) + medias.add(new Sound("/audio/azure/60A339-Moreover__devel.mp3", t_12)); + final long t_13 = t_12 + 9538L; // 79224 (00:01:19:224) + medias.add(new Sound("/audio/azure/97A67F-And_how_should_.mp3", t_13)); + final long t_14 = t_13 + 7304L; // 86528 (00:01:26:528) + medias.add(new Image("/image/02-vision-03-hamr-1.png", t_14)); // #3 + final long t_15 = t_14; + medias.add(new Sound("/audio/azure/8FF368-In_a_tutorial_s.mp3", t_15)); + final long t_16 = t_15 + 7426L; // 93954 (00:01:33:954) + medias.add(new Sound("/audio/azure/9C817C-In_particular__.mp3", t_16)); + final long t_17 = t_16 + 18152L; // 112106 (00:01:52:106) + medias.add(new Image("/image/02-vision-04-hamr-2.png", t_17)); // #4 + final long t_18 = t_17; + medias.add(new Sound("/audio/azure/1063BC-To_summarize__H.mp3", t_18)); + final long t_19 = t_18 + 7756L; // 119862 (00:01:59:862) + medias.add(new Image("/image/02-vision-05-hamr-3.png", t_19)); // #5 + final long t_20 = t_19 + 500L; // 120362 (00:02:00:362) + medias.add(new Sound("/audio/azure/1727DA-It_also_generat.mp3", t_20)); + final long t_21 = t_20 + 10300L; // 130662 (00:02:10:662) + medias.add(new Image("/image/02-vision-06-hamr-4.png", t_21)); // #6 + final long t_22 = t_21 + 500L; // 131162 (00:02:11:162) + medias.add(new Sound("/audio/azure/78F031-and_then_automa.mp3", t_22)); + final long t_23 = t_22 + 5768L; // 136930 (00:02:16:930) + medias.add(new Image("/image/02-vision-07-hamr-aspects-1.png", t_23)); // #7 + final long t_24 = t_23; + medias.add(new Sound("/audio/azure/15AF97-To_a_large_exte.mp3", t_24)); + final long t_25 = t_24 + 7180L; // 144110 (00:02:24:110) + medias.add(new Image("/image/02-vision-08-hamr-aspects-2.png", t_25)); // #8 + final long t_26 = t_25 + 500L; // 144610 (00:02:24:610) + medias.add(new Sound("/audio/azure/5662CB-Firstly__it_con.mp3", t_26)); + final long t_27 = t_26 + 7132L; // 151742 (00:02:31:742) + medias.add(new Image("/image/02-vision-09-hamr-aspects-3.png", t_27)); // #9 + final long t_28 = t_27 + 500L; // 152242 (00:02:32:242) + medias.add(new Sound("/audio/azure/74E5D2-System_builds_a.mp3", t_28)); + final long t_29 = t_28 + 8836L; // 161078 (00:02:41:078) + medias.add(new Image("/image/02-vision-10-hamr-aspects-4.png", t_29)); // #10 + final long t_30 = t_29 + 500L; // 161578 (00:02:41:578) + medias.add(new Sound("/audio/azure/786C12-Safety_and_secu.mp3", t_30)); + final long t_31 = t_30 + 9604L; // 171182 (00:02:51:182) + medias.add(new Image("/image/02-vision-11-hamr-aspects-5.png", t_31)); // #11 + final long t_32 = t_31 + 500L; // 171682 (00:02:51:682) + medias.add(new Sound("/audio/azure/37E604-System_updates_.mp3", t_32)); + final long t_33 = t_32 + 11096L; // 182778 (00:03:02:778) + medias.add(new Image("/image/02-vision-12-pl-1.png", t_33)); // #12 + final long t_34 = t_33; + medias.add(new Sound("/audio/azure/E5D463-Given_that_Hamm.mp3", t_34)); + final long t_35 = t_34 + 11168L; // 193946 (00:03:13:946) + medias.add(new Image("/image/02-vision-13-pl-2.png", t_35)); // #13 + final long t_36 = t_35; + medias.add(new Sound("/audio/azure/490FEE-On_Monday__we_i.mp3", t_36)); + final long t_37 = t_36 + 8554L; // 202500 (00:03:22:500) + medias.add(new Sound("/audio/azure/DC795B-However__our_vi.mp3", t_37)); + final long t_38 = t_37 + 7786L; // 210286 (00:03:30:286) + medias.add(new Sound("/audio/azure/66CFCD-In_particular__.mp3", t_38)); + final long t_39 = t_38 + 8266L; // 218552 (00:03:38:552) + medias.add(new Sound("/audio/azure/124837-It_is_amenable_.mp3", t_39)); + final long t_40 = t_39 + 9394L; // 227946 (00:03:47:946) + medias.add(new Sound("/audio/azure/687A0B-It_integrates_e.mp3", t_40)); + final long t_41 = t_40 + 9176L; // 237122 (00:03:57:122) + medias.add(new Image("/image/02-vision-14-tool.png", t_41)); // #14 + final long t_42 = t_41; + medias.add(new Sound("/audio/azure/792B59-So_today_we_are.mp3", t_42)); + final long t_43 = t_42 + 9562L; // 246684 (00:04:06:684) + medias.add(new Sound("/audio/azure/B7B44F-These_tools_are.mp3", t_43)); + final long t_44 = t_43 + 6632L; // 253316 (00:04:13:316) + medias.add(new Image("/image/03-slang-1.png", t_44)); // #15 + final long t_45 = t_44; + medias.add(new Sound("/audio/azure/C06897-Slang_is_a_safe.mp3", t_45)); + final long t_46 = t_45 + 5266L; // 258582 (00:04:18:582) + medias.add(new Sound("/audio/azure/1D557F-Due_to_Scala_s_.mp3", t_46)); + final long t_47 = t_46 + 10138L; // 268720 (00:04:28:720) + medias.add(new Sound("/audio/azure/6515FC-Moreover__Slang.mp3", t_47)); + final long t_48 = t_47 + 12538L; // 281258 (00:04:41:258) + medias.add(new Sound("/audio/azure/2192D4-In_addition__Sl.mp3", t_48)); + final long t_49 = t_48 + 9538L; // 290796 (00:04:50:796) + medias.add(new Sound("/audio/azure/67E99E-Slang_offers_a_.mp3", t_49)); + final long t_50 = t_49 + 8626L; // 299422 (00:04:59:422) + medias.add(new Sound("/audio/azure/0DAB38-Another_reason_.mp3", t_50)); + final long t_51 = t_50 + 13832L; // 313254 (00:05:13:254) + medias.add(new Image("/image/03-slang-2.png", t_51)); // #16 + final long t_52 = t_51; + medias.add(new Sound("/audio/azure/AB5FA9-Due_to_its_care.mp3", t_52)); + final long t_53 = t_52 + 5746L; // 319000 (00:05:19:000) + medias.add(new Sound("/audio/azure/060845-The_Slang_embed.mp3", t_53)); + final long t_54 = t_53 + 8194L; // 327194 (00:05:27:194) + medias.add(new Sound("/audio/azure/9AC2F1-For_achieving_a.mp3", t_54)); + final long t_55 = t_54 + 7450L; // 334644 (00:05:34:644) + medias.add(new Sound("/audio/azure/B2E298-The_generated_C.mp3", t_55)); + final long t_56 = t_55 + 8480L; // 343124 (00:05:43:124) + medias.add(new Image("/image/03-slang-3.png", t_56)); // #17 + final long t_57 = t_56; + medias.add(new Sound("/audio/azure/9536AF-To_support_form.mp3", t_57)); + final long t_58 = t_57 + 9776L; // 352900 (00:05:52:900) + medias.add(new Image("/image/03-slang-4.png", t_58)); // #18 + final long t_59 = t_58; + medias.add(new Sound("/audio/azure/AE94D2-To_support_auto.mp3", t_59)); + final long t_60 = t_59 + 9634L; // 362534 (00:06:02:534) + medias.add(new Sound("/audio/azure/AC6EDF-Simplification_.mp3", t_60)); + final long t_61 = t_60 + 7018L; // 369552 (00:06:09:552) + medias.add(new Sound("/audio/azure/F825A7-For_example__we.mp3", t_61)); + final long t_62 = t_61 + 11242L; // 380794 (00:06:20:794) + medias.add(new Sound("/audio/azure/DC777C-Thus__aliasing_.mp3", t_62)); + final long t_63 = t_62 + 6200L; // 386994 (00:06:26:994) + medias.add(new Image("/image/04-logika-1.png", t_63)); // #19 + final long t_64 = t_63; + medias.add(new Sound("/audio/azure/58A468-To_support_deve.mp3", t_64)); + final long t_65 = t_64 + 10016L; // 397010 (00:06:37:010) + medias.add(new Image("/image/04-logika-2.png", t_65)); // #20 + final long t_66 = t_65; + medias.add(new Sound("/audio/azure/6B130A-Verification_is.mp3", t_66)); + final long t_67 = t_66 + 10136L; // 407146 (00:06:47:146) + medias.add(new Image("/image/04-logika-3.png", t_67)); // #21 + final long t_68 = t_67; + medias.add(new Sound("/audio/azure/96ADE2-This_continuous.mp3", t_68)); + final long t_69 = t_68 + 13256L; // 420402 (00:07:00:402) + medias.add(new Image("/image/04-logika-4.png", t_69)); // #22 + final long t_70 = t_69; + medias.add(new Sound("/audio/azure/FB4ECC-This_incrementa.mp3", t_70)); + final long t_71 = t_70 + 3634L; // 424036 (00:07:04:036) + medias.add(new Sound("/audio/azure/5DDFCF-When_updates_ar.mp3", t_71)); + final long t_72 = t_71 + 5914L; // 429950 (00:07:09:950) + medias.add(new Sound("/audio/azure/AC45F9-Scalability_is_.mp3", t_72)); + final long t_73 = t_72 + 8146L; // 438096 (00:07:18:096) + medias.add(new Sound("/audio/azure/9FFC7F-This_provides_a.mp3", t_73)); + final long t_74 = t_73 + 8624L; // 446720 (00:07:26:720) + medias.add(new Image("/image/04-logika-5.png", t_74)); // #23 + final long t_75 = t_74; + medias.add(new Sound("/audio/azure/FC6BD4-Finally__since_.mp3", t_75)); + final long t_76 = t_75 + 17624L; // 464344 (00:07:44:344) + medias.add(new Image("/image/05-logika-themes-1.png", t_76)); // #24 + final long t_77 = t_76; + medias.add(new Sound("/audio/azure/967751-We_ll_now_provi.mp3", t_77)); + final long t_78 = t_77 + 5216L; // 469560 (00:07:49:560) + medias.add(new Image("/image/05-logika-themes-2.png", t_78)); // #25 + final long t_79 = t_78; + medias.add(new Sound("/audio/azure/DC3855-Let_s_start_wit.mp3", t_79)); + final long t_80 = t_79 + 11432L; // 480992 (00:08:00:992) + medias.add(new Video("/video/06-demo-logika-intro.mp4", t_80, true, 1.0, 0.0, 0.0)); // #26 + final long t_81 = t_80; + medias.add(new Sound("/audio/azure/CEC6E2-We_ll_see_how_t.mp3", t_81)); + final long t_82 = t_81 + 8290L; // 489282 (00:08:09:282) + medias.add(new Sound("/audio/azure/D74FB0-IntelliJay_prov.mp3", t_82)); + final long t_83 = t_82 + 4272L; // 493554 (00:08:13:554) + medias.add(new Video("/video/06-demo-logika.mp4", t_83, true, 1.0, 15066.7, 24000.0)); // #27 + final long t_84 = t_83 + 3800L; // 497354 (00:08:17:354) + medias.add(new Sound("/audio/azure/D50F93-Slang_analysis_.mp3", t_84)); + final long t_85 = t_84 + 6370L; // 503724 (00:08:23:724) + medias.add(new Sound("/audio/azure/FF625E-Here__we_have_s.mp3", t_85)); + final long t_86 = t_85 + 7138L; // 510862 (00:08:30:862) + medias.add(new Sound("/audio/azure/467B39-The_example_dec.mp3", t_86)); + final long t_87 = t_86 + 5746L; // 516608 (00:08:36:608) + medias.add(new Sound("/audio/azure/C51C8C-A_mission_typic.mp3", t_87)); + final long t_88 = t_87 + 7186L; // 523794 (00:08:43:794) + medias.add(new Sound("/audio/azure/2D6256-As_Logeeka_work.mp3", t_88)); + final long t_89 = t_88 + 6440L; // 530234 (00:08:50:234) + medias.add(new Video("/video/06-demo-logika.mp4", t_89, true, 1.0, 26500.0, 30000.0)); // #28 + final long t_90 = t_89; + medias.add(new Sound("/audio/azure/7F8354-It_decorates_ea.mp3", t_90)); + final long t_91 = t_90 + 2872L; // 533106 (00:08:53:106) + medias.add(new Video("/video/06-demo-logika.mp4", t_91, true, 1.5, 30000.0, 47000.0)); // #29 + final long t_92 = t_91 + 1400L; // 534506 (00:08:54:506) + medias.add(new Sound("/audio/azure/A25E92-which_aids_prog.mp3", t_92)); + final long t_93 = t_92 + 4930L; // 539436 (00:08:59:436) + medias.add(new Sound("/audio/azure/EE13BE-The_state_claim.mp3", t_93)); + final long t_94 = t_93 + 4296L; // 543732 (00:09:03:732) + medias.add(new Sound("/audio/azure/69EC1F-and_as_you_can_.mp3", t_94)); + final long t_95 = t_94 + 7282L; // 551014 (00:09:11:014) + medias.add(new Sound("/audio/azure/3E8311-This_is_the_dir.mp3", t_95)); + final long t_96 = t_95 + 9296L; // 560310 (00:09:20:310) + medias.add(new Video("/video/06-demo-logika.mp4", t_96, true, 1.0, 54500.0, 57500.0)); // #30 + final long t_97 = t_96; + medias.add(new Sound("/audio/azure/7EDA2F-Logeeka_also_de.mp3", t_97)); + final long t_98 = t_97 + 8314L; // 568624 (00:09:28:624) + medias.add(new Sound("/audio/azure/F472E4-Each_query_is_a.mp3", t_98)); + final long t_99 = t_98 + 7688L; // 576312 (00:09:36:312) + medias.add(new Video("/video/06-demo-logika.mp4", t_99, true, 1.0, 63000.0, 69000.0)); // #31 + final long t_100 = t_99; + medias.add(new Sound("/audio/azure/AB613D-Each_sequence_o.mp3", t_100)); + final long t_101 = t_100 + 8168L; // 584480 (00:09:44:480) + medias.add(new Video("/video/06-demo-logika.mp4", t_101, true, 1.0, 69000.0, 80000.0)); // #32 + final long t_102 = t_101; + medias.add(new Sound("/audio/azure/4C7464-Suppose_that_we.mp3", t_102)); + final long t_103 = t_102 + 9850L; // 594330 (00:09:54:330) + medias.add(new Sound("/audio/azure/356E5B-We_believe_such.mp3", t_103)); + final long t_104 = t_103 + 7136L; // 601466 (00:10:01:466) + medias.add(new Video("/video/06-demo-logika.mp4", t_104, true, 1.0, 92000.0, 102000.0)); // #33 + final long t_105 = t_104; + medias.add(new Sound("/audio/azure/DC637F-As_issues_are_f.mp3", t_105)); + final long t_106 = t_105 + 6946L; // 608412 (00:10:08:412) + medias.add(new Sound("/audio/azure/31DE81-We_like_this_li.mp3", t_106)); + final long t_107 = t_106 + 9992L; // 618404 (00:10:18:404) + medias.add(new Video("/video/06-demo-logika.mp4", t_107, true, 1.0, 103750.0, 118250.0)); // #34 + final long t_108 = t_107; + medias.add(new Sound("/audio/azure/8C5CAD-Let_us_now_star.mp3", t_108)); + final long t_109 = t_108 + 6514L; // 624918 (00:10:24:918) + medias.add(new Sound("/audio/azure/06A296-For_example__we.mp3", t_109)); + final long t_110 = t_109 + 9226L; // 634144 (00:10:34:144) + medias.add(new Sound("/audio/azure/29B08E-Obviously__such.mp3", t_110)); + final long t_111 = t_110 + 8528L; // 642672 (00:10:42:672) + medias.add(new Video("/video/06-demo-logika.mp4", t_111, true, 1.0, 118250.0, 135000.0)); // #35 + final long t_112 = t_111; + medias.add(new Sound("/audio/azure/6AC9B9-Suppose_that_we.mp3", t_112)); + final long t_113 = t_112 + 4234L; // 646906 (00:10:46:906) + medias.add(new Sound("/audio/azure/C5E584-This_is_where_S.mp3", t_113)); + final long t_114 = t_113 + 7810L; // 654716 (00:10:54:716) + medias.add(new Sound("/audio/azure/71D875-Thus__the_asser.mp3", t_114)); + final long t_115 = t_114 + 3512L; // 658228 (00:10:58:228) + medias.add(new Video("/video/06-demo-logika.mp4", t_115, true, 1.0, 142500.0, 153500.0)); // #36 + final long t_116 = t_115; + medias.add(new Sound("/audio/azure/DA64D1-We_can_confirm_.mp3", t_116)); + final long t_117 = t_116 + 8866L; // 667094 (00:11:07:094) + medias.add(new Sound("/audio/azure/7EE8FB-Once_it_finishe.mp3", t_117)); + final long t_118 = t_117 + 7954L; // 675048 (00:11:15:048) + medias.add(new Sound("/audio/azure/CFC37F-This_illustrate.mp3", t_118)); + final long t_119 = t_118 + 6752L; // 681800 (00:11:21:800) + medias.add(new Video("/video/06-demo-logika.mp4", t_119, true, 1.0, 161500.0, 173750.0)); // #37 + final long t_120 = t_119; + medias.add(new Sound("/audio/azure/09C8A1-Due_to_the_deep.mp3", t_120)); + final long t_121 = t_120 + 6826L; // 688626 (00:11:28:626) + medias.add(new Sound("/audio/azure/0D906B-We_can_ask_Loge.mp3", t_121)); + final long t_122 = t_121 + 4234L; // 692860 (00:11:32:860) + medias.add(new Sound("/audio/azure/417114-One_might_think.mp3", t_122)); + final long t_123 = t_122 + 10666L; // 703526 (00:11:43:526) + medias.add(new Sound("/audio/azure/C34BB8-On_cases_where_.mp3", t_123)); + final long t_124 = t_123 + 9800L; // 713326 (00:11:53:326) + medias.add(new Video("/video/06-demo-logika.mp4", t_124, true, 2.0, 173750.0, 179500.0)); // #38 + final long t_125 = t_124; + medias.add(new Sound("/audio/azure/96725B-Let_us_now_look.mp3", t_125)); + final long t_126 = t_125 + 4136L; // 717462 (00:11:57:462) + medias.add(new Video("/video/06-demo-logika.mp4", t_126, true, 1.0, 181000.0, 197500.0)); // #39 + final long t_127 = t_126; + medias.add(new Sound("/audio/azure/9F0D2C-I_am_going_to_c.mp3", t_127)); + final long t_128 = t_127 + 5154L; // 722616 (00:12:02:616) + medias.add(new Sound("/audio/azure/A63266-You_can_observe.mp3", t_128)); + final long t_129 = t_128 + 4546L; // 727162 (00:12:07:162) + medias.add(new Sound("/audio/azure/C15B4F-Both_inZone_and.mp3", t_129)); + final long t_130 = t_129 + 6082L; // 733244 (00:12:13:244) + medias.add(new Sound("/audio/azure/B7C448-Such_methods_ca.mp3", t_130)); + final long t_131 = t_130 + 8794L; // 742038 (00:12:22:038) + medias.add(new Sound("/audio/azure/31B342-Move_waypoint_X.mp3", t_131)); + final long t_132 = t_131 + 7282L; // 749320 (00:12:29:320) + medias.add(new Sound("/audio/azure/D0FF0F-As_can_be_obser.mp3", t_132)); + final long t_133 = t_132 + 16426L; // 765746 (00:12:45:746) + medias.add(new Sound("/audio/azure/162ABB-In_the_future__.mp3", t_133)); + final long t_134 = t_133 + 10016L; // 775762 (00:12:55:762) + medias.add(new Image("/image/07-education.png", t_134)); // #40 + final long t_135 = t_134; + medias.add(new Sound("/audio/azure/4B8851-Regarding_democ.mp3", t_135)); + final long t_136 = t_135 + 11560L; // 787322 (00:13:07:322) + medias.add(new Video("/video/08-education-web.mp4", t_136, true, 1.0, 0.0, 0.0)); // #41 + final long t_137 = t_136 + 2800L; // 790122 (00:13:10:122) + medias.add(new Sound("/audio/azure/A89B03-It_has_proven_v.mp3", t_137)); + final long t_138 = t_137 + 8818L; // 798940 (00:13:18:940) + medias.add(new Sound("/audio/azure/7D8BE4-Moreover__Logee.mp3", t_138)); + final long t_139 = t_138 + 8698L; // 807638 (00:13:27:638) + medias.add(new Sound("/audio/azure/5C2EEA-The_accompanyin.mp3", t_139)); + final long t_140 = t_139 + 4282L; // 811920 (00:13:31:920) + medias.add(new Sound("/audio/azure/0448FB-Here_you_can_ob.mp3", t_140)); + final long t_141 = t_140 + 9106L; // 821026 (00:13:41:026) + medias.add(new Sound("/audio/azure/A36DC5-This_teaching_e.mp3", t_141)); + final long t_142 = t_141 + 11672L; // 832698 (00:13:52:698) + medias.add(new Image("/image/09-logika-themes-incremental.png", t_142)); // #42 + final long t_143 = t_142; + medias.add(new Sound("/audio/azure/FEB143-Now_let_s_consi.mp3", t_143)); + final long t_144 = t_143 + 7520L; // 840218 (00:14:00:218) + medias.add(new Image("/image/10-codebase-1.png", t_144)); // #43 + final long t_145 = t_144; + medias.add(new Sound("/audio/azure/3D632D-Up_to_this_poin.mp3", t_145)); + final long t_146 = t_145 + 5746L; // 845964 (00:14:05:964) + medias.add(new Sound("/audio/azure/511776-So_you_may_be_w.mp3", t_146)); + final long t_147 = t_146 + 4138L; // 850102 (00:14:10:102) + medias.add(new Sound("/audio/azure/898A2C-The_answer_is_Y.mp3", t_147)); + final long t_148 = t_147 + 2912L; // 853014 (00:14:13:014) + medias.add(new Image("/image/10-codebase-2.png", t_148)); // #44 + final long t_149 = t_148; + medias.add(new Sound("/audio/azure/768D83-In_addition_to_.mp3", t_149)); + final long t_150 = t_149 + 15154L; // 868168 (00:14:28:168) + medias.add(new Sound("/audio/azure/6E7D8F-The_code_base_i.mp3", t_150)); + final long t_151 = t_150 + 10546L; // 878714 (00:14:38:714) + medias.add(new Sound("/audio/azure/92AF1B-So_not_only_doe.mp3", t_151)); + final long t_152 = t_151 + 3496L; // 882210 (00:14:42:210) + medias.add(new Image("/image/10-codebase-3.png", t_152)); // #45 + final long t_153 = t_152 + 1300L; // 883510 (00:14:43:510) + medias.add(new Sound("/audio/azure/524394-it_means_that_w.mp3", t_153)); + final long t_154 = t_153 + 11312L; // 894822 (00:14:54:822) + medias.add(new Image("/image/10-codebase-4.png", t_154)); // #46 + final long t_155 = t_154; + medias.add(new Sound("/audio/azure/CCEAD1-This_provides_a.mp3", t_155)); + final long t_156 = t_155 + 8554L; // 903376 (00:15:03:376) + medias.add(new Sound("/audio/azure/390247-We_re_currently.mp3", t_156)); + final long t_157 = t_156 + 6536L; // 909912 (00:15:09:912) + medias.add(new Image("/image/10-codebase-5.png", t_157)); // #47 + final long t_158 = t_157; + medias.add(new Sound("/audio/azure/26427A-We_re_now_going.mp3", t_158)); + final long t_159 = t_158 + 9850L; // 919762 (00:15:19:762) + medias.add(new Sound("/audio/azure/F787C0-This_is_possibl.mp3", t_159)); + final long t_160 = t_159 + 6224L; // 925986 (00:15:25:986) + medias.add(new Video("/video/06-demo-logika.mp4", t_160, true, 3.0, 366000.0, 370000.0)); // #48 + final long t_161 = t_160; + medias.add(new Sound("/audio/azure/86C2D8-Let_s_look_at_t.mp3", t_161)); + final long t_162 = t_161 + 3562L; // 929548 (00:15:29:548) + medias.add(new Sound("/audio/azure/13A903-Option_is_part_.mp3", t_162)); + final long t_163 = t_162 + 5312L; // 934860 (00:15:34:860) + medias.add(new Video("/video/06-demo-logika.mp4", t_163, true, 1.0, 380000.0, 380500.0)); // #49 + final long t_164 = t_163; + medias.add(new Sound("/audio/azure/C2E070-Here_you_can_se.mp3", t_164)); + final long t_165 = t_164 + 5458L; // 940318 (00:15:40:318) + medias.add(new Sound("/audio/azure/329DBE-For_this_exampl.mp3", t_165)); + final long t_166 = t_165 + 4304L; // 944622 (00:15:44:622) + medias.add(new Video("/video/06-demo-logika.mp4", t_166, true, 1.0, 380500.0, 385000.0)); // #50 + final long t_167 = t_166 + 1800L; // 946422 (00:15:46:422) + medias.add(new Sound("/audio/azure/0FC47E-The_main_point_.mp3", t_167)); + final long t_168 = t_167 + 6730L; // 953152 (00:15:53:152) + medias.add(new Sound("/audio/azure/12CF2B-Then__the_Logee.mp3", t_168)); + final long t_169 = t_168 + 10666L; // 963818 (00:16:03:818) + medias.add(new Sound("/audio/azure/1B3248-You_just_saw_a_.mp3", t_169)); + final long t_170 = t_169 + 6464L; // 970282 (00:16:10:282) + medias.add(new Video("/video/06-demo-logika.mp4", t_170, true, 1.0, 386250.0, 390000.0)); // #51 + final long t_171 = t_170 + 1800L; // 972082 (00:16:12:082) + medias.add(new Sound("/audio/azure/08E4BC-Then__when_we_c.mp3", t_171)); + final long t_172 = t_171 + 7400L; // 979482 (00:16:19:482) + medias.add(new Image("/image/11-codebase-graph.png", t_172)); // #52 + final long t_173 = t_172 + 1500L; // 980982 (00:16:20:982) + medias.add(new Sound("/audio/azure/747F7D-Logeeka_increme.mp3", t_173)); + final long t_174 = t_173 + 8218L; // 989200 (00:16:29:200) + medias.add(new Sound("/audio/azure/CFDE24-Just_like_an_in.mp3", t_174)); + final long t_175 = t_174 + 15370L; // 1004570 (00:16:44:570) + medias.add(new Sound("/audio/azure/51690A-Using_this_info.mp3", t_175)); + final long t_176 = t_175 + 12080L; // 1016650 (00:16:56:650) + medias.add(new Video("/video/12-codebase-incremental.mp4", t_176, true, 1.0, 0.0, 1700.0)); // #53 + final long t_177 = t_176; + medias.add(new Sound("/audio/azure/7E565A-Let_me_describe.mp3", t_177)); + final long t_178 = t_177 + 2501L; // 1019151 (00:16:59:151) + medias.add(new Video("/video/12-codebase-incremental.mp4", t_178, true, 1.0, 1700.0, 2000.0)); // #54 + final long t_179 = t_178 + 750L; // 1019901 (00:16:59:901) + medias.add(new Sound("/audio/azure/1B83D4-When_a_particul.mp3", t_179)); + final long t_180 = t_179 + 3446L; // 1023347 (00:17:03:347) + medias.add(new Video("/video/12-codebase-incremental.mp4", t_180, true, 1.0, 2000.0, 5000.0)); // #55 + final long t_181 = t_180 + -350L; // 1022997 (00:17:02:997) + medias.add(new Sound("/audio/azure/A65B2C-Logeeka_starts_.mp3", t_181)); + final long t_182 = t_181 + 3284L; // 1026281 (00:17:06:281) + medias.add(new Image("/image/13-incremental-1.png", t_182)); // #56 + final long t_183 = t_182 + 1900L; // 1028181 (00:17:08:181) + medias.add(new Sound("/audio/azure/1EDF2E-until_it_finds_.mp3", t_183)); + final long t_184 = t_183 + 4376L; // 1032557 (00:17:12:557) + medias.add(new Image("/image/13-incremental-2.png", t_184)); // #57 + final long t_185 = t_184; + medias.add(new Sound("/audio/azure/BA7EB4-Along_the_way__.mp3", t_185)); + final long t_186 = t_185 + 4930L; // 1037487 (00:17:17:487) + medias.add(new Sound("/audio/azure/9E0CBC-That_is__Logeek.mp3", t_186)); + final long t_187 = t_186 + 11432L; // 1048919 (00:17:28:919) + medias.add(new Image("/image/13-incremental-3.png", t_187)); // #58 + final long t_188 = t_187; + medias.add(new Sound("/audio/azure/90EA23-Only_the_Option.mp3", t_188)); + final long t_189 = t_188 + 4714L; // 1053633 (00:17:33:633) + medias.add(new Sound("/audio/azure/769B25-In_the_context_.mp3", t_189)); + final long t_190 = t_189 + 9536L; // 1063169 (00:17:43:169) + medias.add(new Image("/image/13-incremental-4.png", t_190)); // #59 + final long t_191 = t_190; + medias.add(new Sound("/audio/azure/CC4088-Furthermore__Lo.mp3", t_191)); + final long t_192 = t_191 + 7042L; // 1070211 (00:17:50:211) + medias.add(new Sound("/audio/azure/3942DA-For_example__mo.mp3", t_192)); + final long t_193 = t_192 + 6082L; // 1076293 (00:17:56:293) + medias.add(new Sound("/audio/azure/04AE50-SMT_queries_are.mp3", t_193)); + final long t_194 = t_193 + 4570L; // 1080863 (00:18:00:863) + medias.add(new Sound("/audio/azure/133AB4-We_found_these_.mp3", t_194)); + final long t_195 = t_194 + 6658L; // 1087521 (00:18:07:521) + medias.add(new Sound("/audio/azure/2D8378-For_less_capabl.mp3", t_195)); + final long t_196 = t_195 + 6392L; // 1093913 (00:18:13:913) + medias.add(new Image("/image/14-hamr-abstraction-1.png", t_196)); // #60 + final long t_197 = t_196; + medias.add(new Sound("/audio/azure/9DEAB8-So_let_s_start_.mp3", t_197)); + final long t_198 = t_197 + 7592L; // 1101505 (00:18:21:505) + medias.add(new Image("/image/14-hamr-abstraction-2.png", t_198)); // #61 + final long t_199 = t_198; + medias.add(new Sound("/audio/azure/809129-We_now_want_to_.mp3", t_199)); + final long t_200 = t_199 + 7042L; // 1108547 (00:18:28:547) + medias.add(new Sound("/audio/azure/7EBE33-Recall_that_if_.mp3", t_200)); + final long t_201 = t_200 + 7930L; // 1116477 (00:18:36:477) + medias.add(new Sound("/audio/azure/EADE64-Also__you_have_.mp3", t_201)); + final long t_202 = t_201 + 10160L; // 1126637 (00:18:46:637) + medias.add(new Image("/image/14-hamr-abstraction-3.png", t_202)); // #62 + final long t_203 = t_202; + medias.add(new Sound("/audio/azure/86E768-Moreover__we_ca.mp3", t_203)); + final long t_204 = t_203 + 8002L; // 1134639 (00:18:54:639) + medias.add(new Sound("/audio/azure/7A54E0-However__the_st.mp3", t_204)); + final long t_205 = t_204 + 5564L; // 1140203 (00:19:00:203) + medias.add(new Image("/image/14-hamr-abstraction-4.png", t_205)); // #63 + final long t_206 = t_205 + 800L; // 1141003 (00:19:01:003) + medias.add(new Sound("/audio/azure/1C78D8-On_the_GUMBO_pr.mp3", t_206)); + final long t_207 = t_206 + 27248L; // 1168251 (00:19:28:251) + medias.add(new Image("/image/15-temp-control-1.png", t_207)); // #64 + final long t_208 = t_207; + medias.add(new Sound("/audio/azure/EFCA6F-Here_s_the_exam.mp3", t_208)); + final long t_209 = t_208 + 4522L; // 1172773 (00:19:32:773) + medias.add(new Sound("/audio/azure/69E08F-We_have_a_tempe.mp3", t_209)); + final long t_210 = t_209 + 14864L; // 1187637 (00:19:47:637) + medias.add(new Image("/image/15-temp-control-2.png", t_210)); // #65 + final long t_211 = t_210; + medias.add(new Sound("/audio/azure/676EB8-Using_Hammer_co.mp3", t_211)); + final long t_212 = t_211 + 11408L; // 1199045 (00:19:59:045) + medias.add(new Image("/image/15-temp-control-3.png", t_212)); // #66 + final long t_213 = t_212; + medias.add(new Sound("/audio/azure/D72137-Using_the_GUMBO.mp3", t_213)); + final long t_214 = t_213 + 13520L; // 1212565 (00:20:12:565) + medias.add(new Image("/image/16-gumbo-1.png", t_214)); // #67 + final long t_215 = t_214; + medias.add(new Sound("/audio/azure/237074-Here_is_the_GUM.mp3", t_215)); + final long t_216 = t_215 + 6440L; // 1219005 (00:20:19:005) + medias.add(new Image("/image/16-gumbo-2.png", t_216)); // #68 + final long t_217 = t_216; + medias.add(new Sound("/audio/azure/F94F49-The_example_con.mp3", t_217)); + final long t_218 = t_217 + 7858L; // 1226863 (00:20:26:863) + medias.add(new Sound("/audio/azure/988492-For_example__th.mp3", t_218)); + final long t_219 = t_218 + 7954L; // 1234817 (00:20:34:817) + medias.add(new Sound("/audio/azure/A18946-In_addition_to_.mp3", t_219)); + final long t_220 = t_219 + 12776L; // 1247593 (00:20:47:593) + medias.add(new Video("/video/17-demo-temp-control.mp4", t_220, true, 1.0, 0.0, 333.0)); // #69 + final long t_221 = t_220; + medias.add(new Sound("/audio/azure/5A1943-So__what_you_ar.mp3", t_221)); + final long t_222 = t_221 + 7066L; // 1254659 (00:20:54:659) + medias.add(new Sound("/audio/azure/DA2AAF-The_code_has_be.mp3", t_222)); + final long t_223 = t_222 + 4168L; // 1258827 (00:20:58:827) + medias.add(new Video("/video/17-demo-temp-control.mp4", t_223, true, 1.0, 333.0, 3000.0)); // #70 + final long t_224 = t_223 + 5800L; // 1264627 (00:21:04:627) + medias.add(new Sound("/audio/azure/10FD93-Logeeka_has_alr.mp3", t_224)); + final long t_225 = t_224 + 5744L; // 1270371 (00:21:10:371) + medias.add(new Video("/video/17-demo-temp-control.mp4", t_225, true, 1.0, 6000.0, 10000.0)); // #71 + final long t_226 = t_225; + medias.add(new Sound("/audio/azure/8557DD-If_we_introduce.mp3", t_226)); + final long t_227 = t_226 + 8960L; // 1279331 (00:21:19:331) + medias.add(new Video("/video/17-demo-temp-control.mp4", t_227, true, 1.0, 10000.0, 14333.0)); // #72 + final long t_228 = t_227; + medias.add(new Sound("/audio/azure/20C32A-A_problem_marke.mp3", t_228)); + final long t_229 = t_228 + 6536L; // 1285867 (00:21:25:867) + medias.add(new Video("/video/17-demo-temp-control.mp4", t_229, true, 1.0, 14500.0, 0.0)); // #73 + final long t_230 = t_229; + medias.add(new Sound("/audio/azure/DAD5D3-When_the_bug_is.mp3", t_230)); + final long t_231 = t_230 + 6800L; // 1292667 (00:21:32:667) + medias.add(new Image("/image/18-logika-themes-parallel.png", t_231)); // #74 + final long t_232 = t_231; + medias.add(new Sound("/audio/azure/DE6AE7-Let_s_now_consi.mp3", t_232)); + final long t_233 = t_232 + 5432L; // 1298099 (00:21:38:099) + medias.add(new Image("/image/19-parallel-1.png", t_233)); // #75 + final long t_234 = t_233; + medias.add(new Sound("/audio/azure/1CC617-One_key_observa.mp3", t_234)); + final long t_235 = t_234 + 10760L; // 1308859 (00:21:48:859) + medias.add(new Image("/image/19-parallel-2.png", t_235)); // #76 + final long t_236 = t_235; + medias.add(new Sound("/audio/azure/3D38B7-Moreover__Logee.mp3", t_236)); + final long t_237 = t_236 + 10448L; // 1319307 (00:21:59:307) + medias.add(new Image("/image/19-parallel-3.png", t_237)); // #77 + final long t_238 = t_237; + medias.add(new Sound("/audio/azure/87CE89-In_the_future__.mp3", t_238)); + final long t_239 = t_238 + 12322L; // 1331629 (00:22:11:629) + medias.add(new Sound("/audio/azure/4B6208-In_such_setup__.mp3", t_239)); + final long t_240 = t_239 + 5482L; // 1337111 (00:22:17:111) + medias.add(new Sound("/audio/azure/BFF8C5-We_believe_para.mp3", t_240)); + final long t_241 = t_240 + 8696L; // 1345807 (00:22:25:807) + medias.add(new Image("/image/19-parallel-4.png", t_241)); // #78 + final long t_242 = t_241; + medias.add(new Sound("/audio/azure/A9352F-It_is_especiall.mp3", t_242)); + final long t_243 = t_242 + 9128L; // 1354935 (00:22:34:935) + medias.add(new Image("/image/19-parallel-5.png", t_243)); // #79 + final long t_244 = t_243; + medias.add(new Sound("/audio/azure/61825A-Now__allow_me_t.mp3", t_244)); + final long t_245 = t_244 + 5096L; // 1360031 (00:22:40:031) + medias.add(new Video("/video/20-demo-logika-legion.mp4", t_245, true, 1.0, 0.0, 500.0)); // #80 + final long t_246 = t_245 + 1800L; // 1361831 (00:22:41:831) + medias.add(new Sound("/audio/azure/9C9E17-Here_is_an_i_pa.mp3", t_246)); + final long t_247 = t_246 + 5168L; // 1366999 (00:22:46:999) + medias.add(new Video("/video/20-demo-logika-legion.mp4", t_247, true, 1.0, 0.0, 2000.0)); // #81 + final long t_248 = t_247; + medias.add(new Sound("/audio/azure/A73082-The_browser_is_.mp3", t_248)); + final long t_249 = t_248 + 11290L; // 1378289 (00:22:58:289) + medias.add(new Sound("/audio/azure/9DFFF5-That_is__the_he.mp3", t_249)); + final long t_250 = t_249 + 11888L; // 1390177 (00:23:10:177) + medias.add(new Video("/video/20-demo-logika-legion.mp4", t_250, true, 1.0, 2000.0, 4000.0)); // #82 + final long t_251 = t_250; + medias.add(new Sound("/audio/azure/1D2FD2-This_particular.mp3", t_251)); + final long t_252 = t_251 + 9826L; // 1400003 (00:23:20:003) + medias.add(new Sound("/audio/azure/045722-On_the_right_ha.mp3", t_252)); + final long t_253 = t_252 + 6752L; // 1406755 (00:23:26:755) + medias.add(new Video("/video/20-demo-logika-legion.mp4", t_253, true, 1.0, 9000.0, 36000.0)); // #83 + final long t_254 = t_253 + 1800L; // 1408555 (00:23:28:555) + medias.add(new Sound("/audio/azure/90D7A1-As_can_be_obser.mp3", t_254)); + final long t_255 = t_254 + 4930L; // 1413485 (00:23:33:485) + medias.add(new Sound("/audio/azure/867E2D-Next__I_will_op.mp3", t_255)); + final long t_256 = t_255 + 9196L; // 1422681 (00:23:42:681) + medias.add(new Video("/video/20-demo-logika-legion.mp4", t_256, false, 1.0, 36000.0, 49000.0)); // #84 + final long t_257 = t_256 + 12501L; // 1435182 (00:23:55:182) + medias.add(new Video("/video/20-demo-logika-legion.mp4", t_257, true, 1.0, 49000.0, 60000.0)); // #85 + final long t_258 = t_257 + 1300L; // 1436482 (00:23:56:482) + medias.add(new Sound("/audio/azure/1827EC-As_can_be_obser.mp3", t_258)); + final long t_259 = t_258 + 8360L; // 1444842 (00:24:04:842) + medias.add(new Image("/image/21-proof-engineering-1.png", t_259)); // #86 + final long t_260 = t_259; + medias.add(new Sound("/audio/azure/B2995F-Finally__for_th.mp3", t_260)); + final long t_261 = t_260 + 2192L; // 1447034 (00:24:07:034) + medias.add(new Image("/image/21-proof-engineering-2.png", t_261)); // #87 + final long t_262 = t_261 + 800L; // 1447834 (00:24:07:834) + medias.add(new Sound("/audio/azure/535237-we_are_not_clai.mp3", t_262)); + final long t_263 = t_262 + 4954L; // 1452788 (00:24:12:788) + medias.add(new Sound("/audio/azure/1C822C-However__in_pra.mp3", t_263)); + final long t_264 = t_263 + 8984L; // 1461772 (00:24:21:772) + medias.add(new Video("/video/06-demo-logika.mp4", t_264, true, 2.0, 213000.0, 214000.0)); // #88 + final long t_265 = t_264; + medias.add(new Sound("/audio/azure/E1D517-Here_we_see_how.mp3", t_265)); + final long t_266 = t_265 + 6826L; // 1468598 (00:24:28:598) + medias.add(new Sound("/audio/azure/2C5BFD-Some_of_the_pro.mp3", t_266)); + final long t_267 = t_266 + 6728L; // 1475326 (00:24:35:326) + medias.add(new Video("/video/06-demo-logika.mp4", t_267, true, 2.0, 221500.0, 234000.0)); // #89 + final long t_268 = t_267; + medias.add(new Sound("/audio/azure/432D7B-Because_all_the.mp3", t_268)); + final long t_269 = t_268 + 8098L; // 1483424 (00:24:43:424) + medias.add(new Sound("/audio/azure/1CA835-After_the_refac.mp3", t_269)); + final long t_270 = t_269 + 5530L; // 1488954 (00:24:48:954) + medias.add(new Sound("/audio/azure/3D522F-Each_Slang_proo.mp3", t_270)); + final long t_271 = t_270 + 3596L; // 1492550 (00:24:52:550) + medias.add(new Video("/video/06-demo-logika.mp4", t_271, true, 1.25, 245000.0, 256000.0)); // #90 + final long t_272 = t_271 + 800L; // 1493350 (00:24:53:350) + medias.add(new Sound("/audio/azure/C90E14-The_numbering_d.mp3", t_272)); + final long t_273 = t_272 + 9464L; // 1502814 (00:25:02:814) + medias.add(new Video("/video/06-demo-logika.mp4", t_273, true, 1.0, 261250.0, 272000.0)); // #91 + final long t_274 = t_273; + medias.add(new Sound("/audio/azure/4F7C26-Each_proof_step.mp3", t_274)); + final long t_275 = t_274 + 9802L; // 1512616 (00:25:12:616) + medias.add(new Sound("/audio/azure/AF579D-Logeeka_provide.mp3", t_275)); + final long t_276 = t_275 + 4484L; // 1517100 (00:25:17:100) + medias.add(new Video("/video/06-demo-logika.mp4", t_276, true, 1.0, 273500.0, 278000.0)); // #92 + final long t_277 = t_276 + 800L; // 1517900 (00:25:17:900) + medias.add(new Sound("/audio/azure/0A6DB4-The_premise_jus.mp3", t_277)); + final long t_278 = t_277 + 8530L; // 1526430 (00:25:26:430) + medias.add(new Sound("/audio/azure/97B157-Custom_justific.mp3", t_278)); + final long t_279 = t_278 + 6634L; // 1533064 (00:25:33:064) + medias.add(new Sound("/audio/azure/2FAC7C-Thus__to_keep_w.mp3", t_279)); + final long t_280 = t_279 + 18064L; // 1551128 (00:25:51:128) + medias.add(new Image("/image/22-conclusion.png", t_280)); // #93 + final long t_281 = t_280 + 800L; // 1551928 (00:25:51:928) + medias.add(new Sound("/audio/azure/103884-In_closing__in_.mp3", t_281)); + final long t_282 = t_281 + 10282L; // 1562210 (00:26:02:210) + medias.add(new Sound("/audio/azure/45C475-All_of_these_to.mp3", t_282)); + final long t_283 = t_282 + 4210L; // 1566420 (00:26:06:420) + medias.add(new Sound("/audio/azure/E4F99D-Logeeka_in_part.mp3", t_283)); + final long t_284 = t_283 + 11632L; // 1578052 (00:26:18:052) + medias.add(new Image("/image/23-end.png", t_284)); // #94 + final long t_285 = t_284 + 800L; // 1578852 (00:26:18:852) + medias.add(new Sound("/audio/azure/CD5E85-Thank_you_all_f.mp3", t_285)); + + final long end = 1583180L; // 00:26:23:180 + + if (width == -1 || height == -1) { + final Rectangle2D rect = Screen.getPrimary().getBounds(); + width = rect.getWidth(); + height = rect.getHeight(); + } + + for (final Media media : medias) { + final String uri = media.getUri(); + System.out.print("Loading " + uri + " ... "); + System.out.flush(); + while (!media.isReady()) { + if (media.hasError()) { + System.err.println("failed"); + System.err.flush(); + Platform.exit(); + } + sleep(100); + } + System.out.println("done"); + System.out.flush(); + } + final Thread thread = new Thread(() -> { + while (Presentasi.this.stage == null) Presentasi.sleep(100); + final int size = medias.size(); + long start = System.currentTimeMillis(); + int i = 0; + if (slideNo > 0) { + int j = 0; + while (i < size && j < slideNo) { + if (!(medias.get(i) instanceof Sound)) { + j = j + 1; + } + i++; + } + while (i < size && medias.get(i) instanceof Sound) i++; + if (i < size) start = start - medias.get(i).getTimeline(); + } else if (startTime > 0) { + while (i < size && medias.get(i).getTimeline() < startTime) { + i++; + } + while (i < size && medias.get(i) instanceof Sound) i++; + if (i < size) start = start - medias.get(i).getTimeline(); + } + while (i < size) { + final Media media = medias.get(i); + while (System.currentTimeMillis() - start <= media.getTimeline()) Presentasi.sleep(TIMELINE_GRANULARITY); + if (media instanceof Sound) { + final MediaPlayer mediaPlayer = ((Sound) media).mediaPlayer; + mediaPlayer.setVolume(TEXT_VOLUME); + mediaPlayer.play(); + } else if (media instanceof Image) { + final Image graphic = (Image) media; + final StackPane root = new StackPane(); + final ImageView imageView = graphic.imageView; + root.getChildren().add(imageView); + imageView.setPreserveRatio(true); + imageView.setSmooth(true); + imageView.setFitWidth(width); + imageView.setFitHeight(height); + stage.getScene().setRoot(root); + Platform.runLater(() -> stage.show()); + } else if (media instanceof Video) { + final Video video = (Video) media; + final StackPane root = new StackPane(); + final MediaView mediaView = video.mediaView; + root.getChildren().add(mediaView); + mediaView.setPreserveRatio(true); + mediaView.setSmooth(true); + mediaView.setFitWidth(width); + mediaView.setFitHeight(height); + final MediaPlayer player = mediaView.getMediaPlayer(); + player.setStartTime(Duration.millis(video.startMillis)); + player.setRate(video.rate); + if (video.endMillis > 0.0) player.setStopTime(Duration.millis(video.endMillis)); + player.setVolume(1.0); + player.setMute(video.muted); + Platform.runLater(() -> { + player.play(); + if (video.startMillis > 0) { + Presentasi.sleep(VSEEK_DELAY); + } + stage.getScene().setRoot(root); + stage.show(); + }); + } + i++; + } + while (System.currentTimeMillis() - start <= end) Presentasi.sleep(TIMELINE_GRANULARITY); + Platform.exit(); + }); + thread.setDaemon(true); + thread.start(); + } + + public static void sleep(final long millis) { + try { + Thread.sleep(millis); + } catch (final Throwable t) { + // skip + } + } + + @Override + public void start(final Stage primaryStage) { + primaryStage.setFullScreenExitHint(""); + primaryStage.setFullScreen(fullScreen); + primaryStage.setResizable(!fullScreen); + final Scene scene = new Scene(new StackPane(), width, height); + primaryStage.setScene(scene); + this.stage = primaryStage; + } + +} \ No newline at end of file diff --git a/jvm/src/main/resources/audio/.gitignore b/jvm/src/main/resources/audio/.gitignore new file mode 100644 index 0000000..61a54f0 --- /dev/null +++ b/jvm/src/main/resources/audio/.gitignore @@ -0,0 +1 @@ +/marytts diff --git a/jvm/src/main/resources/audio/azure/0448FB-Here_you_can_ob.mp3 b/jvm/src/main/resources/audio/azure/0448FB-Here_you_can_ob.mp3 new file mode 100644 index 0000000..065d00d Binary files /dev/null and b/jvm/src/main/resources/audio/azure/0448FB-Here_you_can_ob.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/045722-On_the_right_ha.mp3 b/jvm/src/main/resources/audio/azure/045722-On_the_right_ha.mp3 new file mode 100644 index 0000000..6a0e367 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/045722-On_the_right_ha.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/04AE50-SMT_queries_are.mp3 b/jvm/src/main/resources/audio/azure/04AE50-SMT_queries_are.mp3 new file mode 100644 index 0000000..8d32bee Binary files /dev/null and b/jvm/src/main/resources/audio/azure/04AE50-SMT_queries_are.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/060845-The_Slang_embed.mp3 b/jvm/src/main/resources/audio/azure/060845-The_Slang_embed.mp3 new file mode 100644 index 0000000..6b272ac Binary files /dev/null and b/jvm/src/main/resources/audio/azure/060845-The_Slang_embed.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/06A296-For_example__we.mp3 b/jvm/src/main/resources/audio/azure/06A296-For_example__we.mp3 new file mode 100644 index 0000000..911f9d9 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/06A296-For_example__we.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/08E4BC-Then__when_we_c.mp3 b/jvm/src/main/resources/audio/azure/08E4BC-Then__when_we_c.mp3 new file mode 100644 index 0000000..37917d7 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/08E4BC-Then__when_we_c.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/09C8A1-Due_to_the_deep.mp3 b/jvm/src/main/resources/audio/azure/09C8A1-Due_to_the_deep.mp3 new file mode 100644 index 0000000..3ce0f26 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/09C8A1-Due_to_the_deep.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/0A6DB4-The_premise_jus.mp3 b/jvm/src/main/resources/audio/azure/0A6DB4-The_premise_jus.mp3 new file mode 100644 index 0000000..5603170 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/0A6DB4-The_premise_jus.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/0D906B-We_can_ask_Loge.mp3 b/jvm/src/main/resources/audio/azure/0D906B-We_can_ask_Loge.mp3 new file mode 100644 index 0000000..f378152 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/0D906B-We_can_ask_Loge.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/0DAB38-Another_reason_.mp3 b/jvm/src/main/resources/audio/azure/0DAB38-Another_reason_.mp3 new file mode 100644 index 0000000..f643fe6 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/0DAB38-Another_reason_.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/0FC47E-The_main_point_.mp3 b/jvm/src/main/resources/audio/azure/0FC47E-The_main_point_.mp3 new file mode 100644 index 0000000..c67c0e8 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/0FC47E-The_main_point_.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/103884-In_closing__in_.mp3 b/jvm/src/main/resources/audio/azure/103884-In_closing__in_.mp3 new file mode 100644 index 0000000..8374a09 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/103884-In_closing__in_.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/1063BC-To_summarize__H.mp3 b/jvm/src/main/resources/audio/azure/1063BC-To_summarize__H.mp3 new file mode 100644 index 0000000..62a064c Binary files /dev/null and b/jvm/src/main/resources/audio/azure/1063BC-To_summarize__H.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/10FD93-Logeeka_has_alr.mp3 b/jvm/src/main/resources/audio/azure/10FD93-Logeeka_has_alr.mp3 new file mode 100644 index 0000000..471cc53 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/10FD93-Logeeka_has_alr.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/1239A2-Democratization.mp3 b/jvm/src/main/resources/audio/azure/1239A2-Democratization.mp3 new file mode 100644 index 0000000..88d35e8 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/1239A2-Democratization.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/124837-It_is_amenable_.mp3 b/jvm/src/main/resources/audio/azure/124837-It_is_amenable_.mp3 new file mode 100644 index 0000000..01e9048 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/124837-It_is_amenable_.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/12CF2B-Then__the_Logee.mp3 b/jvm/src/main/resources/audio/azure/12CF2B-Then__the_Logee.mp3 new file mode 100644 index 0000000..391776c Binary files /dev/null and b/jvm/src/main/resources/audio/azure/12CF2B-Then__the_Logee.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/133AB4-We_found_these_.mp3 b/jvm/src/main/resources/audio/azure/133AB4-We_found_these_.mp3 new file mode 100644 index 0000000..abbbd49 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/133AB4-We_found_these_.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/13A903-Option_is_part_.mp3 b/jvm/src/main/resources/audio/azure/13A903-Option_is_part_.mp3 new file mode 100644 index 0000000..d324605 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/13A903-Option_is_part_.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/15AF97-To_a_large_exte.mp3 b/jvm/src/main/resources/audio/azure/15AF97-To_a_large_exte.mp3 new file mode 100644 index 0000000..ec2f4eb Binary files /dev/null and b/jvm/src/main/resources/audio/azure/15AF97-To_a_large_exte.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/162ABB-In_the_future__.mp3 b/jvm/src/main/resources/audio/azure/162ABB-In_the_future__.mp3 new file mode 100644 index 0000000..828f7a9 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/162ABB-In_the_future__.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/1712DF-Incremental_Che.mp3 b/jvm/src/main/resources/audio/azure/1712DF-Incremental_Che.mp3 new file mode 100644 index 0000000..3b51d4c Binary files /dev/null and b/jvm/src/main/resources/audio/azure/1712DF-Incremental_Che.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/1727DA-It_also_generat.mp3 b/jvm/src/main/resources/audio/azure/1727DA-It_also_generat.mp3 new file mode 100644 index 0000000..43b259f Binary files /dev/null and b/jvm/src/main/resources/audio/azure/1727DA-It_also_generat.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/1827EC-As_can_be_obser.mp3 b/jvm/src/main/resources/audio/azure/1827EC-As_can_be_obser.mp3 new file mode 100644 index 0000000..5d4351b Binary files /dev/null and b/jvm/src/main/resources/audio/azure/1827EC-As_can_be_obser.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/1B3248-You_just_saw_a_.mp3 b/jvm/src/main/resources/audio/azure/1B3248-You_just_saw_a_.mp3 new file mode 100644 index 0000000..38a2f0d Binary files /dev/null and b/jvm/src/main/resources/audio/azure/1B3248-You_just_saw_a_.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/1B83D4-When_a_particul.mp3 b/jvm/src/main/resources/audio/azure/1B83D4-When_a_particul.mp3 new file mode 100644 index 0000000..c93de6a Binary files /dev/null and b/jvm/src/main/resources/audio/azure/1B83D4-When_a_particul.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/1C78D8-On_the_GUMBO_pr.mp3 b/jvm/src/main/resources/audio/azure/1C78D8-On_the_GUMBO_pr.mp3 new file mode 100644 index 0000000..077708d Binary files /dev/null and b/jvm/src/main/resources/audio/azure/1C78D8-On_the_GUMBO_pr.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/1C822C-However__in_pra.mp3 b/jvm/src/main/resources/audio/azure/1C822C-However__in_pra.mp3 new file mode 100644 index 0000000..2d75059 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/1C822C-However__in_pra.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/1CA835-After_the_refac.mp3 b/jvm/src/main/resources/audio/azure/1CA835-After_the_refac.mp3 new file mode 100644 index 0000000..b916c2a Binary files /dev/null and b/jvm/src/main/resources/audio/azure/1CA835-After_the_refac.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/1CC617-One_key_observa.mp3 b/jvm/src/main/resources/audio/azure/1CC617-One_key_observa.mp3 new file mode 100644 index 0000000..2e4a697 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/1CC617-One_key_observa.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/1D2FD2-This_particular.mp3 b/jvm/src/main/resources/audio/azure/1D2FD2-This_particular.mp3 new file mode 100644 index 0000000..0601447 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/1D2FD2-This_particular.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/1D557F-Due_to_Scala_s_.mp3 b/jvm/src/main/resources/audio/azure/1D557F-Due_to_Scala_s_.mp3 new file mode 100644 index 0000000..e9bb5ea Binary files /dev/null and b/jvm/src/main/resources/audio/azure/1D557F-Due_to_Scala_s_.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/1EDF2E-until_it_finds_.mp3 b/jvm/src/main/resources/audio/azure/1EDF2E-until_it_finds_.mp3 new file mode 100644 index 0000000..0b80b27 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/1EDF2E-until_it_finds_.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/20C32A-A_problem_marke.mp3 b/jvm/src/main/resources/audio/azure/20C32A-A_problem_marke.mp3 new file mode 100644 index 0000000..a962a70 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/20C32A-A_problem_marke.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/2172DB-They_should_lev.mp3 b/jvm/src/main/resources/audio/azure/2172DB-They_should_lev.mp3 new file mode 100644 index 0000000..4f69833 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/2172DB-They_should_lev.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/2192D4-In_addition__Sl.mp3 b/jvm/src/main/resources/audio/azure/2192D4-In_addition__Sl.mp3 new file mode 100644 index 0000000..131f794 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/2192D4-In_addition__Sl.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/237074-Here_is_the_GUM.mp3 b/jvm/src/main/resources/audio/azure/237074-Here_is_the_GUM.mp3 new file mode 100644 index 0000000..ae60254 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/237074-Here_is_the_GUM.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/26427A-We_re_now_going.mp3 b/jvm/src/main/resources/audio/azure/26427A-We_re_now_going.mp3 new file mode 100644 index 0000000..a45f846 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/26427A-We_re_now_going.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/29B08E-Obviously__such.mp3 b/jvm/src/main/resources/audio/azure/29B08E-Obviously__such.mp3 new file mode 100644 index 0000000..c2f8f93 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/29B08E-Obviously__such.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/2B36E4-Similarly__we_c.mp3 b/jvm/src/main/resources/audio/azure/2B36E4-Similarly__we_c.mp3 new file mode 100644 index 0000000..fcdbe59 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/2B36E4-Similarly__we_c.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/2B5FC0-As_part_of_the_.mp3 b/jvm/src/main/resources/audio/azure/2B5FC0-As_part_of_the_.mp3 new file mode 100644 index 0000000..b996be4 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/2B5FC0-As_part_of_the_.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/2C5BFD-Some_of_the_pro.mp3 b/jvm/src/main/resources/audio/azure/2C5BFD-Some_of_the_pro.mp3 new file mode 100644 index 0000000..a0e0c09 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/2C5BFD-Some_of_the_pro.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/2D6256-As_Logeeka_work.mp3 b/jvm/src/main/resources/audio/azure/2D6256-As_Logeeka_work.mp3 new file mode 100644 index 0000000..9c75df7 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/2D6256-As_Logeeka_work.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/2D8378-For_less_capabl.mp3 b/jvm/src/main/resources/audio/azure/2D8378-For_less_capabl.mp3 new file mode 100644 index 0000000..bc5bc23 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/2D8378-For_less_capabl.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/2FAC7C-Thus__to_keep_w.mp3 b/jvm/src/main/resources/audio/azure/2FAC7C-Thus__to_keep_w.mp3 new file mode 100644 index 0000000..a4a3e26 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/2FAC7C-Thus__to_keep_w.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/31B342-Move_waypoint_X.mp3 b/jvm/src/main/resources/audio/azure/31B342-Move_waypoint_X.mp3 new file mode 100644 index 0000000..f5c14f8 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/31B342-Move_waypoint_X.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/31DE81-We_like_this_li.mp3 b/jvm/src/main/resources/audio/azure/31DE81-We_like_this_li.mp3 new file mode 100644 index 0000000..612a5de Binary files /dev/null and b/jvm/src/main/resources/audio/azure/31DE81-We_like_this_li.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/329DBE-For_this_exampl.mp3 b/jvm/src/main/resources/audio/azure/329DBE-For_this_exampl.mp3 new file mode 100644 index 0000000..1f61149 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/329DBE-For_this_exampl.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/356E5B-We_believe_such.mp3 b/jvm/src/main/resources/audio/azure/356E5B-We_believe_such.mp3 new file mode 100644 index 0000000..03da92f Binary files /dev/null and b/jvm/src/main/resources/audio/azure/356E5B-We_believe_such.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/37E604-System_updates_.mp3 b/jvm/src/main/resources/audio/azure/37E604-System_updates_.mp3 new file mode 100644 index 0000000..9532835 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/37E604-System_updates_.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/390247-We_re_currently.mp3 b/jvm/src/main/resources/audio/azure/390247-We_re_currently.mp3 new file mode 100644 index 0000000..5b19fb8 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/390247-We_re_currently.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/3936FD-automatically_c.mp3 b/jvm/src/main/resources/audio/azure/3936FD-automatically_c.mp3 new file mode 100644 index 0000000..dbdcddb Binary files /dev/null and b/jvm/src/main/resources/audio/azure/3936FD-automatically_c.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/3942DA-For_example__mo.mp3 b/jvm/src/main/resources/audio/azure/3942DA-For_example__mo.mp3 new file mode 100644 index 0000000..b6fb93b Binary files /dev/null and b/jvm/src/main/resources/audio/azure/3942DA-For_example__mo.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/3D38B7-Moreover__Logee.mp3 b/jvm/src/main/resources/audio/azure/3D38B7-Moreover__Logee.mp3 new file mode 100644 index 0000000..73190ac Binary files /dev/null and b/jvm/src/main/resources/audio/azure/3D38B7-Moreover__Logee.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/3D522F-Each_Slang_proo.mp3 b/jvm/src/main/resources/audio/azure/3D522F-Each_Slang_proo.mp3 new file mode 100644 index 0000000..52dae0d Binary files /dev/null and b/jvm/src/main/resources/audio/azure/3D522F-Each_Slang_proo.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/3D632D-Up_to_this_poin.mp3 b/jvm/src/main/resources/audio/azure/3D632D-Up_to_this_poin.mp3 new file mode 100644 index 0000000..cf5f92d Binary files /dev/null and b/jvm/src/main/resources/audio/azure/3D632D-Up_to_this_poin.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/3DF0D4-The_formal_anal.mp3 b/jvm/src/main/resources/audio/azure/3DF0D4-The_formal_anal.mp3 new file mode 100644 index 0000000..613877f Binary files /dev/null and b/jvm/src/main/resources/audio/azure/3DF0D4-The_formal_anal.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/3E8311-This_is_the_dir.mp3 b/jvm/src/main/resources/audio/azure/3E8311-This_is_the_dir.mp3 new file mode 100644 index 0000000..07447fe Binary files /dev/null and b/jvm/src/main/resources/audio/azure/3E8311-This_is_the_dir.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/417114-One_might_think.mp3 b/jvm/src/main/resources/audio/azure/417114-One_might_think.mp3 new file mode 100644 index 0000000..3b70d89 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/417114-One_might_think.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/41B079-S_E_L__4_is_wri.mp3 b/jvm/src/main/resources/audio/azure/41B079-S_E_L__4_is_wri.mp3 new file mode 100644 index 0000000..dc12131 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/41B079-S_E_L__4_is_wri.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/432D7B-Because_all_the.mp3 b/jvm/src/main/resources/audio/azure/432D7B-Because_all_the.mp3 new file mode 100644 index 0000000..e967460 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/432D7B-Because_all_the.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/43C1DF-In_our_case__th.mp3 b/jvm/src/main/resources/audio/azure/43C1DF-In_our_case__th.mp3 new file mode 100644 index 0000000..1c4d3ba Binary files /dev/null and b/jvm/src/main/resources/audio/azure/43C1DF-In_our_case__th.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/443ED6-Hello_.mp3 b/jvm/src/main/resources/audio/azure/443ED6-Hello_.mp3 new file mode 100644 index 0000000..2d3f066 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/443ED6-Hello_.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/44933E-Continuous_Deli.mp3 b/jvm/src/main/resources/audio/azure/44933E-Continuous_Deli.mp3 new file mode 100644 index 0000000..1fb1d7f Binary files /dev/null and b/jvm/src/main/resources/audio/azure/44933E-Continuous_Deli.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/45C475-All_of_these_to.mp3 b/jvm/src/main/resources/audio/azure/45C475-All_of_these_to.mp3 new file mode 100644 index 0000000..628426d Binary files /dev/null and b/jvm/src/main/resources/audio/azure/45C475-All_of_these_to.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/467B39-The_example_dec.mp3 b/jvm/src/main/resources/audio/azure/467B39-The_example_dec.mp3 new file mode 100644 index 0000000..04a82ed Binary files /dev/null and b/jvm/src/main/resources/audio/azure/467B39-The_example_dec.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/478E0C-We_truly_believ.mp3 b/jvm/src/main/resources/audio/azure/478E0C-We_truly_believ.mp3 new file mode 100644 index 0000000..c7e477e Binary files /dev/null and b/jvm/src/main/resources/audio/azure/478E0C-We_truly_believ.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/490FEE-On_Monday__we_i.mp3 b/jvm/src/main/resources/audio/azure/490FEE-On_Monday__we_i.mp3 new file mode 100644 index 0000000..89aeaf5 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/490FEE-On_Monday__we_i.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/4B6208-In_such_setup__.mp3 b/jvm/src/main/resources/audio/azure/4B6208-In_such_setup__.mp3 new file mode 100644 index 0000000..2116cd3 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/4B6208-In_such_setup__.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/4B8851-Regarding_democ.mp3 b/jvm/src/main/resources/audio/azure/4B8851-Regarding_democ.mp3 new file mode 100644 index 0000000..e72a367 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/4B8851-Regarding_democ.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/4C7464-Suppose_that_we.mp3 b/jvm/src/main/resources/audio/azure/4C7464-Suppose_that_we.mp3 new file mode 100644 index 0000000..d269b6e Binary files /dev/null and b/jvm/src/main/resources/audio/azure/4C7464-Suppose_that_we.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/4F7C26-Each_proof_step.mp3 b/jvm/src/main/resources/audio/azure/4F7C26-Each_proof_step.mp3 new file mode 100644 index 0000000..94ec3f2 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/4F7C26-Each_proof_step.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/4F8113-Furthermore__it.mp3 b/jvm/src/main/resources/audio/azure/4F8113-Furthermore__it.mp3 new file mode 100644 index 0000000..ca7e5df Binary files /dev/null and b/jvm/src/main/resources/audio/azure/4F8113-Furthermore__it.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/506D5B-We_ll_now_provi.mp3 b/jvm/src/main/resources/audio/azure/506D5B-We_ll_now_provi.mp3 new file mode 100644 index 0000000..932a40f Binary files /dev/null and b/jvm/src/main/resources/audio/azure/506D5B-We_ll_now_provi.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/511776-So_you_may_be_w.mp3 b/jvm/src/main/resources/audio/azure/511776-So_you_may_be_w.mp3 new file mode 100644 index 0000000..6e83a95 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/511776-So_you_may_be_w.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/51690A-Using_this_info.mp3 b/jvm/src/main/resources/audio/azure/51690A-Using_this_info.mp3 new file mode 100644 index 0000000..f1fde6a Binary files /dev/null and b/jvm/src/main/resources/audio/azure/51690A-Using_this_info.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/524394-it_means_that_w.mp3 b/jvm/src/main/resources/audio/azure/524394-it_means_that_w.mp3 new file mode 100644 index 0000000..beb2ee7 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/524394-it_means_that_w.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/535237-we_are_not_clai.mp3 b/jvm/src/main/resources/audio/azure/535237-we_are_not_clai.mp3 new file mode 100644 index 0000000..cd20ace Binary files /dev/null and b/jvm/src/main/resources/audio/azure/535237-we_are_not_clai.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/5527FA-We_believe_that.mp3 b/jvm/src/main/resources/audio/azure/5527FA-We_believe_that.mp3 new file mode 100644 index 0000000..068de75 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/5527FA-We_believe_that.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/5662CB-Firstly__it_con.mp3 b/jvm/src/main/resources/audio/azure/5662CB-Firstly__it_con.mp3 new file mode 100644 index 0000000..f53d28b Binary files /dev/null and b/jvm/src/main/resources/audio/azure/5662CB-Firstly__it_con.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/575408-Then__Hammer_en.mp3 b/jvm/src/main/resources/audio/azure/575408-Then__Hammer_en.mp3 new file mode 100644 index 0000000..f2fcc05 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/575408-Then__Hammer_en.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/588953-Verification_is.mp3 b/jvm/src/main/resources/audio/azure/588953-Verification_is.mp3 new file mode 100644 index 0000000..ede84ee Binary files /dev/null and b/jvm/src/main/resources/audio/azure/588953-Verification_is.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/58A468-To_support_deve.mp3 b/jvm/src/main/resources/audio/azure/58A468-To_support_deve.mp3 new file mode 100644 index 0000000..b97ec91 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/58A468-To_support_deve.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/5A1943-So__what_you_ar.mp3 b/jvm/src/main/resources/audio/azure/5A1943-So__what_you_ar.mp3 new file mode 100644 index 0000000..c52a740 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/5A1943-So__what_you_ar.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/5C2EEA-The_accompanyin.mp3 b/jvm/src/main/resources/audio/azure/5C2EEA-The_accompanyin.mp3 new file mode 100644 index 0000000..2246e64 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/5C2EEA-The_accompanyin.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/5DDFCF-When_updates_ar.mp3 b/jvm/src/main/resources/audio/azure/5DDFCF-When_updates_ar.mp3 new file mode 100644 index 0000000..fd0f21c Binary files /dev/null and b/jvm/src/main/resources/audio/azure/5DDFCF-When_updates_ar.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/60A339-Moreover__devel.mp3 b/jvm/src/main/resources/audio/azure/60A339-Moreover__devel.mp3 new file mode 100644 index 0000000..4c955f8 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/60A339-Moreover__devel.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/60B52E-We_d_like_to_sh.mp3 b/jvm/src/main/resources/audio/azure/60B52E-We_d_like_to_sh.mp3 new file mode 100644 index 0000000..6324dd5 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/60B52E-We_d_like_to_sh.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/61825A-Now__allow_me_t.mp3 b/jvm/src/main/resources/audio/azure/61825A-Now__allow_me_t.mp3 new file mode 100644 index 0000000..3d1c291 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/61825A-Now__allow_me_t.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/6515FC-Moreover__Slang.mp3 b/jvm/src/main/resources/audio/azure/6515FC-Moreover__Slang.mp3 new file mode 100644 index 0000000..08d14c9 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/6515FC-Moreover__Slang.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/65CFF2-Server_based_de.mp3 b/jvm/src/main/resources/audio/azure/65CFF2-Server_based_de.mp3 new file mode 100644 index 0000000..51dadef Binary files /dev/null and b/jvm/src/main/resources/audio/azure/65CFF2-Server_based_de.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/66CFCD-In_particular__.mp3 b/jvm/src/main/resources/audio/azure/66CFCD-In_particular__.mp3 new file mode 100644 index 0000000..6631e2a Binary files /dev/null and b/jvm/src/main/resources/audio/azure/66CFCD-In_particular__.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/676EB8-Using_Hammer_co.mp3 b/jvm/src/main/resources/audio/azure/676EB8-Using_Hammer_co.mp3 new file mode 100644 index 0000000..71ac125 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/676EB8-Using_Hammer_co.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/67E99E-Slang_offers_a_.mp3 b/jvm/src/main/resources/audio/azure/67E99E-Slang_offers_a_.mp3 new file mode 100644 index 0000000..ed775ab Binary files /dev/null and b/jvm/src/main/resources/audio/azure/67E99E-Slang_offers_a_.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/687A0B-It_integrates_e.mp3 b/jvm/src/main/resources/audio/azure/687A0B-It_integrates_e.mp3 new file mode 100644 index 0000000..22e0399 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/687A0B-It_integrates_e.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/69E08F-We_have_a_tempe.mp3 b/jvm/src/main/resources/audio/azure/69E08F-We_have_a_tempe.mp3 new file mode 100644 index 0000000..ea6a6eb Binary files /dev/null and b/jvm/src/main/resources/audio/azure/69E08F-We_have_a_tempe.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/69EC1F-and_as_you_can_.mp3 b/jvm/src/main/resources/audio/azure/69EC1F-and_as_you_can_.mp3 new file mode 100644 index 0000000..094394e Binary files /dev/null and b/jvm/src/main/resources/audio/azure/69EC1F-and_as_you_can_.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/6AC9B9-Suppose_that_we.mp3 b/jvm/src/main/resources/audio/azure/6AC9B9-Suppose_that_we.mp3 new file mode 100644 index 0000000..acf51aa Binary files /dev/null and b/jvm/src/main/resources/audio/azure/6AC9B9-Suppose_that_we.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/6B130A-Verification_is.mp3 b/jvm/src/main/resources/audio/azure/6B130A-Verification_is.mp3 new file mode 100644 index 0000000..262cc05 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/6B130A-Verification_is.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/6E7D8F-The_code_base_i.mp3 b/jvm/src/main/resources/audio/azure/6E7D8F-The_code_base_i.mp3 new file mode 100644 index 0000000..06c911e Binary files /dev/null and b/jvm/src/main/resources/audio/azure/6E7D8F-The_code_base_i.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/70E3B6-This_work_is_fu.mp3 b/jvm/src/main/resources/audio/azure/70E3B6-This_work_is_fu.mp3 new file mode 100644 index 0000000..642b6f0 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/70E3B6-This_work_is_fu.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/71D875-Thus__the_asser.mp3 b/jvm/src/main/resources/audio/azure/71D875-Thus__the_asser.mp3 new file mode 100644 index 0000000..b7824cc Binary files /dev/null and b/jvm/src/main/resources/audio/azure/71D875-Thus__the_asser.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/71D8BC-Our_dream_is_to.mp3 b/jvm/src/main/resources/audio/azure/71D8BC-Our_dream_is_to.mp3 new file mode 100644 index 0000000..e3ce40d Binary files /dev/null and b/jvm/src/main/resources/audio/azure/71D8BC-Our_dream_is_to.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/747F7D-Logeeka_increme.mp3 b/jvm/src/main/resources/audio/azure/747F7D-Logeeka_increme.mp3 new file mode 100644 index 0000000..25c913f Binary files /dev/null and b/jvm/src/main/resources/audio/azure/747F7D-Logeeka_increme.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/74E5D2-System_builds_a.mp3 b/jvm/src/main/resources/audio/azure/74E5D2-System_builds_a.mp3 new file mode 100644 index 0000000..dde0ca6 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/74E5D2-System_builds_a.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/768D83-In_addition_to_.mp3 b/jvm/src/main/resources/audio/azure/768D83-In_addition_to_.mp3 new file mode 100644 index 0000000..4e9f08e Binary files /dev/null and b/jvm/src/main/resources/audio/azure/768D83-In_addition_to_.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/769B25-In_the_context_.mp3 b/jvm/src/main/resources/audio/azure/769B25-In_the_context_.mp3 new file mode 100644 index 0000000..1169052 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/769B25-In_the_context_.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/786C12-Safety_and_secu.mp3 b/jvm/src/main/resources/audio/azure/786C12-Safety_and_secu.mp3 new file mode 100644 index 0000000..b807ca6 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/786C12-Safety_and_secu.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/78F031-and_then_automa.mp3 b/jvm/src/main/resources/audio/azure/78F031-and_then_automa.mp3 new file mode 100644 index 0000000..c78ecf5 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/78F031-and_then_automa.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/792B59-So_today_we_are.mp3 b/jvm/src/main/resources/audio/azure/792B59-So_today_we_are.mp3 new file mode 100644 index 0000000..c6d9da8 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/792B59-So_today_we_are.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/798562-The_formal_veri.mp3 b/jvm/src/main/resources/audio/azure/798562-The_formal_veri.mp3 new file mode 100644 index 0000000..a3f007c Binary files /dev/null and b/jvm/src/main/resources/audio/azure/798562-The_formal_veri.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/7A54E0-However__the_st.mp3 b/jvm/src/main/resources/audio/azure/7A54E0-However__the_st.mp3 new file mode 100644 index 0000000..a85ef41 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/7A54E0-However__the_st.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/7D8BE4-Moreover__Logee.mp3 b/jvm/src/main/resources/audio/azure/7D8BE4-Moreover__Logee.mp3 new file mode 100644 index 0000000..821b70b Binary files /dev/null and b/jvm/src/main/resources/audio/azure/7D8BE4-Moreover__Logee.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/7E565A-Let_me_describe.mp3 b/jvm/src/main/resources/audio/azure/7E565A-Let_me_describe.mp3 new file mode 100644 index 0000000..9dfd37f Binary files /dev/null and b/jvm/src/main/resources/audio/azure/7E565A-Let_me_describe.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/7EBE33-Recall_that_if_.mp3 b/jvm/src/main/resources/audio/azure/7EBE33-Recall_that_if_.mp3 new file mode 100644 index 0000000..462735e Binary files /dev/null and b/jvm/src/main/resources/audio/azure/7EBE33-Recall_that_if_.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/7EDA2F-Logeeka_also_de.mp3 b/jvm/src/main/resources/audio/azure/7EDA2F-Logeeka_also_de.mp3 new file mode 100644 index 0000000..0ad2935 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/7EDA2F-Logeeka_also_de.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/7EE8FB-Once_it_finishe.mp3 b/jvm/src/main/resources/audio/azure/7EE8FB-Once_it_finishe.mp3 new file mode 100644 index 0000000..e2c108e Binary files /dev/null and b/jvm/src/main/resources/audio/azure/7EE8FB-Once_it_finishe.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/7F8354-It_decorates_ea.mp3 b/jvm/src/main/resources/audio/azure/7F8354-It_decorates_ea.mp3 new file mode 100644 index 0000000..9dfa540 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/7F8354-It_decorates_ea.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/809129-We_now_want_to_.mp3 b/jvm/src/main/resources/audio/azure/809129-We_now_want_to_.mp3 new file mode 100644 index 0000000..758709f Binary files /dev/null and b/jvm/src/main/resources/audio/azure/809129-We_now_want_to_.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/8557DD-If_we_introduce.mp3 b/jvm/src/main/resources/audio/azure/8557DD-If_we_introduce.mp3 new file mode 100644 index 0000000..ef4da47 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/8557DD-If_we_introduce.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/867E2D-Next__I_will_op.mp3 b/jvm/src/main/resources/audio/azure/867E2D-Next__I_will_op.mp3 new file mode 100644 index 0000000..f4d0d25 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/867E2D-Next__I_will_op.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/86C2D8-Let_s_look_at_t.mp3 b/jvm/src/main/resources/audio/azure/86C2D8-Let_s_look_at_t.mp3 new file mode 100644 index 0000000..1149ea7 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/86C2D8-Let_s_look_at_t.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/86E768-Moreover__we_ca.mp3 b/jvm/src/main/resources/audio/azure/86E768-Moreover__we_ca.mp3 new file mode 100644 index 0000000..b339c60 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/86E768-Moreover__we_ca.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/870355-In_summary__Ham.mp3 b/jvm/src/main/resources/audio/azure/870355-In_summary__Ham.mp3 new file mode 100644 index 0000000..c56a739 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/870355-In_summary__Ham.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/87CE89-In_the_future__.mp3 b/jvm/src/main/resources/audio/azure/87CE89-In_the_future__.mp3 new file mode 100644 index 0000000..024db89 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/87CE89-In_the_future__.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/898A2C-The_answer_is_Y.mp3 b/jvm/src/main/resources/audio/azure/898A2C-The_answer_is_Y.mp3 new file mode 100644 index 0000000..de87dbb Binary files /dev/null and b/jvm/src/main/resources/audio/azure/898A2C-The_answer_is_Y.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/8C5CAD-Let_us_now_star.mp3 b/jvm/src/main/resources/audio/azure/8C5CAD-Let_us_now_star.mp3 new file mode 100644 index 0000000..f3131a9 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/8C5CAD-Let_us_now_star.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/8FF368-In_a_tutorial_s.mp3 b/jvm/src/main/resources/audio/azure/8FF368-In_a_tutorial_s.mp3 new file mode 100644 index 0000000..a62340a Binary files /dev/null and b/jvm/src/main/resources/audio/azure/8FF368-In_a_tutorial_s.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/90D7A1-As_can_be_obser.mp3 b/jvm/src/main/resources/audio/azure/90D7A1-As_can_be_obser.mp3 new file mode 100644 index 0000000..64e2e5a Binary files /dev/null and b/jvm/src/main/resources/audio/azure/90D7A1-As_can_be_obser.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/90EA23-Only_the_Option.mp3 b/jvm/src/main/resources/audio/azure/90EA23-Only_the_Option.mp3 new file mode 100644 index 0000000..8623e1e Binary files /dev/null and b/jvm/src/main/resources/audio/azure/90EA23-Only_the_Option.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/92AF1B-So_not_only_doe.mp3 b/jvm/src/main/resources/audio/azure/92AF1B-So_not_only_doe.mp3 new file mode 100644 index 0000000..079bd05 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/92AF1B-So_not_only_doe.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/934464-This_conference.mp3 b/jvm/src/main/resources/audio/azure/934464-This_conference.mp3 new file mode 100644 index 0000000..54970ec Binary files /dev/null and b/jvm/src/main/resources/audio/azure/934464-This_conference.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/9536AF-To_support_form.mp3 b/jvm/src/main/resources/audio/azure/9536AF-To_support_form.mp3 new file mode 100644 index 0000000..6e01add Binary files /dev/null and b/jvm/src/main/resources/audio/azure/9536AF-To_support_form.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/96725B-Let_us_now_look.mp3 b/jvm/src/main/resources/audio/azure/96725B-Let_us_now_look.mp3 new file mode 100644 index 0000000..354bc93 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/96725B-Let_us_now_look.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/967751-We_ll_now_provi.mp3 b/jvm/src/main/resources/audio/azure/967751-We_ll_now_provi.mp3 new file mode 100644 index 0000000..35de7c8 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/967751-We_ll_now_provi.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/96ADE2-This_continuous.mp3 b/jvm/src/main/resources/audio/azure/96ADE2-This_continuous.mp3 new file mode 100644 index 0000000..55c234f Binary files /dev/null and b/jvm/src/main/resources/audio/azure/96ADE2-This_continuous.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/97A67F-And_how_should_.mp3 b/jvm/src/main/resources/audio/azure/97A67F-And_how_should_.mp3 new file mode 100644 index 0000000..d51ba41 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/97A67F-And_how_should_.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/97B157-Custom_justific.mp3 b/jvm/src/main/resources/audio/azure/97B157-Custom_justific.mp3 new file mode 100644 index 0000000..9ccfae0 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/97B157-Custom_justific.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/988492-For_example__th.mp3 b/jvm/src/main/resources/audio/azure/988492-For_example__th.mp3 new file mode 100644 index 0000000..08058e7 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/988492-For_example__th.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/99E703-Integration_int.mp3 b/jvm/src/main/resources/audio/azure/99E703-Integration_int.mp3 new file mode 100644 index 0000000..edfe732 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/99E703-Integration_int.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/9AC2F1-For_achieving_a.mp3 b/jvm/src/main/resources/audio/azure/9AC2F1-For_achieving_a.mp3 new file mode 100644 index 0000000..d97109f Binary files /dev/null and b/jvm/src/main/resources/audio/azure/9AC2F1-For_achieving_a.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/9C817C-In_particular__.mp3 b/jvm/src/main/resources/audio/azure/9C817C-In_particular__.mp3 new file mode 100644 index 0000000..3d6ddfd Binary files /dev/null and b/jvm/src/main/resources/audio/azure/9C817C-In_particular__.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/9C9E17-Here_is_an_i_pa.mp3 b/jvm/src/main/resources/audio/azure/9C9E17-Here_is_an_i_pa.mp3 new file mode 100644 index 0000000..5fb8c9f Binary files /dev/null and b/jvm/src/main/resources/audio/azure/9C9E17-Here_is_an_i_pa.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/9DEAB8-So_let_s_start_.mp3 b/jvm/src/main/resources/audio/azure/9DEAB8-So_let_s_start_.mp3 new file mode 100644 index 0000000..4e99876 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/9DEAB8-So_let_s_start_.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/9DFD5B-In_particular__.mp3 b/jvm/src/main/resources/audio/azure/9DFD5B-In_particular__.mp3 new file mode 100644 index 0000000..3060ce6 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/9DFD5B-In_particular__.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/9DFFF5-That_is__the_he.mp3 b/jvm/src/main/resources/audio/azure/9DFFF5-That_is__the_he.mp3 new file mode 100644 index 0000000..5a568a1 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/9DFFF5-That_is__the_he.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/9E0CBC-That_is__Logeek.mp3 b/jvm/src/main/resources/audio/azure/9E0CBC-That_is__Logeek.mp3 new file mode 100644 index 0000000..200f4ef Binary files /dev/null and b/jvm/src/main/resources/audio/azure/9E0CBC-That_is__Logeek.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/9F0D2C-I_am_going_to_c.mp3 b/jvm/src/main/resources/audio/azure/9F0D2C-I_am_going_to_c.mp3 new file mode 100644 index 0000000..b40c16f Binary files /dev/null and b/jvm/src/main/resources/audio/azure/9F0D2C-I_am_going_to_c.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/9FFC7F-This_provides_a.mp3 b/jvm/src/main/resources/audio/azure/9FFC7F-This_provides_a.mp3 new file mode 100644 index 0000000..82599d4 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/9FFC7F-This_provides_a.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/A18946-In_addition_to_.mp3 b/jvm/src/main/resources/audio/azure/A18946-In_addition_to_.mp3 new file mode 100644 index 0000000..b4f77ef Binary files /dev/null and b/jvm/src/main/resources/audio/azure/A18946-In_addition_to_.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/A25E92-which_aids_prog.mp3 b/jvm/src/main/resources/audio/azure/A25E92-which_aids_prog.mp3 new file mode 100644 index 0000000..91293e0 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/A25E92-which_aids_prog.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/A36DC5-This_teaching_e.mp3 b/jvm/src/main/resources/audio/azure/A36DC5-This_teaching_e.mp3 new file mode 100644 index 0000000..dc976e9 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/A36DC5-This_teaching_e.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/A63266-You_can_observe.mp3 b/jvm/src/main/resources/audio/azure/A63266-You_can_observe.mp3 new file mode 100644 index 0000000..467adeb Binary files /dev/null and b/jvm/src/main/resources/audio/azure/A63266-You_can_observe.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/A65B2C-Logeeka_starts_.mp3 b/jvm/src/main/resources/audio/azure/A65B2C-Logeeka_starts_.mp3 new file mode 100644 index 0000000..32bb66d Binary files /dev/null and b/jvm/src/main/resources/audio/azure/A65B2C-Logeeka_starts_.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/A73082-The_browser_is_.mp3 b/jvm/src/main/resources/audio/azure/A73082-The_browser_is_.mp3 new file mode 100644 index 0000000..484e76a Binary files /dev/null and b/jvm/src/main/resources/audio/azure/A73082-The_browser_is_.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/A89B03-It_has_proven_v.mp3 b/jvm/src/main/resources/audio/azure/A89B03-It_has_proven_v.mp3 new file mode 100644 index 0000000..4eca3c8 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/A89B03-It_has_proven_v.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/A9352F-It_is_especiall.mp3 b/jvm/src/main/resources/audio/azure/A9352F-It_is_especiall.mp3 new file mode 100644 index 0000000..db9ba6e Binary files /dev/null and b/jvm/src/main/resources/audio/azure/A9352F-It_is_especiall.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/AA1B41-What_types_of_f.mp3 b/jvm/src/main/resources/audio/azure/AA1B41-What_types_of_f.mp3 new file mode 100644 index 0000000..b7636f6 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/AA1B41-What_types_of_f.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/AA302A-They_should_be_.mp3 b/jvm/src/main/resources/audio/azure/AA302A-They_should_be_.mp3 new file mode 100644 index 0000000..0df0819 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/AA302A-They_should_be_.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/AB5FA9-Due_to_its_care.mp3 b/jvm/src/main/resources/audio/azure/AB5FA9-Due_to_its_care.mp3 new file mode 100644 index 0000000..1ff9b2d Binary files /dev/null and b/jvm/src/main/resources/audio/azure/AB5FA9-Due_to_its_care.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/AB613D-Each_sequence_o.mp3 b/jvm/src/main/resources/audio/azure/AB613D-Each_sequence_o.mp3 new file mode 100644 index 0000000..9a76296 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/AB613D-Each_sequence_o.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/AC45F9-Scalability_is_.mp3 b/jvm/src/main/resources/audio/azure/AC45F9-Scalability_is_.mp3 new file mode 100644 index 0000000..d0f308c Binary files /dev/null and b/jvm/src/main/resources/audio/azure/AC45F9-Scalability_is_.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/AC6EDF-Simplification_.mp3 b/jvm/src/main/resources/audio/azure/AC6EDF-Simplification_.mp3 new file mode 100644 index 0000000..c6edfde Binary files /dev/null and b/jvm/src/main/resources/audio/azure/AC6EDF-Simplification_.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/AE94D2-To_support_auto.mp3 b/jvm/src/main/resources/audio/azure/AE94D2-To_support_auto.mp3 new file mode 100644 index 0000000..122fc3f Binary files /dev/null and b/jvm/src/main/resources/audio/azure/AE94D2-To_support_auto.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/AF579D-Logeeka_provide.mp3 b/jvm/src/main/resources/audio/azure/AF579D-Logeeka_provide.mp3 new file mode 100644 index 0000000..c53b4c3 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/AF579D-Logeeka_provide.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/B2995F-Finally__for_th.mp3 b/jvm/src/main/resources/audio/azure/B2995F-Finally__for_th.mp3 new file mode 100644 index 0000000..0f5fc30 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/B2995F-Finally__for_th.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/B2E298-The_generated_C.mp3 b/jvm/src/main/resources/audio/azure/B2E298-The_generated_C.mp3 new file mode 100644 index 0000000..222e3fd Binary files /dev/null and b/jvm/src/main/resources/audio/azure/B2E298-The_generated_C.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/B5E791-Accessible_Proo.mp3 b/jvm/src/main/resources/audio/azure/B5E791-Accessible_Proo.mp3 new file mode 100644 index 0000000..c68845f Binary files /dev/null and b/jvm/src/main/resources/audio/azure/B5E791-Accessible_Proo.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/B708AA-We_can_take_any.mp3 b/jvm/src/main/resources/audio/azure/B708AA-We_can_take_any.mp3 new file mode 100644 index 0000000..a1115dd Binary files /dev/null and b/jvm/src/main/resources/audio/azure/B708AA-We_can_take_any.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/B7B44F-These_tools_are.mp3 b/jvm/src/main/resources/audio/azure/B7B44F-These_tools_are.mp3 new file mode 100644 index 0000000..c4a7a3f Binary files /dev/null and b/jvm/src/main/resources/audio/azure/B7B44F-These_tools_are.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/B7C448-Such_methods_ca.mp3 b/jvm/src/main/resources/audio/azure/B7C448-Such_methods_ca.mp3 new file mode 100644 index 0000000..bc4789a Binary files /dev/null and b/jvm/src/main/resources/audio/azure/B7C448-Such_methods_ca.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/B9E369-This_continuous.mp3 b/jvm/src/main/resources/audio/azure/B9E369-This_continuous.mp3 new file mode 100644 index 0000000..fce9709 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/B9E369-This_continuous.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/BA7EB4-Along_the_way__.mp3 b/jvm/src/main/resources/audio/azure/BA7EB4-Along_the_way__.mp3 new file mode 100644 index 0000000..91f7820 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/BA7EB4-Along_the_way__.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/BFF8C5-We_believe_para.mp3 b/jvm/src/main/resources/audio/azure/BFF8C5-We_believe_para.mp3 new file mode 100644 index 0000000..cc75194 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/BFF8C5-We_believe_para.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/C06897-Slang_is_a_safe.mp3 b/jvm/src/main/resources/audio/azure/C06897-Slang_is_a_safe.mp3 new file mode 100644 index 0000000..f04120a Binary files /dev/null and b/jvm/src/main/resources/audio/azure/C06897-Slang_is_a_safe.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/C15B4F-Both_inZone_and.mp3 b/jvm/src/main/resources/audio/azure/C15B4F-Both_inZone_and.mp3 new file mode 100644 index 0000000..9119c6d Binary files /dev/null and b/jvm/src/main/resources/audio/azure/C15B4F-Both_inZone_and.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/C18CA0-This_strategy_i.mp3 b/jvm/src/main/resources/audio/azure/C18CA0-This_strategy_i.mp3 new file mode 100644 index 0000000..0056cc5 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/C18CA0-This_strategy_i.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/C2E070-Here_you_can_se.mp3 b/jvm/src/main/resources/audio/azure/C2E070-Here_you_can_se.mp3 new file mode 100644 index 0000000..904477e Binary files /dev/null and b/jvm/src/main/resources/audio/azure/C2E070-Here_you_can_se.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/C34BB8-On_cases_where_.mp3 b/jvm/src/main/resources/audio/azure/C34BB8-On_cases_where_.mp3 new file mode 100644 index 0000000..f3007d8 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/C34BB8-On_cases_where_.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/C51C8C-A_mission_typic.mp3 b/jvm/src/main/resources/audio/azure/C51C8C-A_mission_typic.mp3 new file mode 100644 index 0000000..609b000 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/C51C8C-A_mission_typic.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/C5E584-This_is_where_S.mp3 b/jvm/src/main/resources/audio/azure/C5E584-This_is_where_S.mp3 new file mode 100644 index 0000000..7021cd4 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/C5E584-This_is_where_S.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/C61692-In_fact__we_are.mp3 b/jvm/src/main/resources/audio/azure/C61692-In_fact__we_are.mp3 new file mode 100644 index 0000000..283046e Binary files /dev/null and b/jvm/src/main/resources/audio/azure/C61692-In_fact__we_are.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/C90E14-The_numbering_d.mp3 b/jvm/src/main/resources/audio/azure/C90E14-The_numbering_d.mp3 new file mode 100644 index 0000000..e29287d Binary files /dev/null and b/jvm/src/main/resources/audio/azure/C90E14-The_numbering_d.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/CC4088-Furthermore__Lo.mp3 b/jvm/src/main/resources/audio/azure/CC4088-Furthermore__Lo.mp3 new file mode 100644 index 0000000..9331251 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/CC4088-Furthermore__Lo.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/CCEAD1-This_provides_a.mp3 b/jvm/src/main/resources/audio/azure/CCEAD1-This_provides_a.mp3 new file mode 100644 index 0000000..64e103b Binary files /dev/null and b/jvm/src/main/resources/audio/azure/CCEAD1-This_provides_a.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/CD5E85-Thank_you_all_f.mp3 b/jvm/src/main/resources/audio/azure/CD5E85-Thank_you_all_f.mp3 new file mode 100644 index 0000000..364aa9c Binary files /dev/null and b/jvm/src/main/resources/audio/azure/CD5E85-Thank_you_all_f.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/CD9BAD-When_updates_ar.mp3 b/jvm/src/main/resources/audio/azure/CD9BAD-When_updates_ar.mp3 new file mode 100644 index 0000000..2f768d9 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/CD9BAD-When_updates_ar.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/CE3986-This_conference.mp3 b/jvm/src/main/resources/audio/azure/CE3986-This_conference.mp3 new file mode 100644 index 0000000..932785e Binary files /dev/null and b/jvm/src/main/resources/audio/azure/CE3986-This_conference.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/CEC6E2-We_ll_see_how_t.mp3 b/jvm/src/main/resources/audio/azure/CEC6E2-We_ll_see_how_t.mp3 new file mode 100644 index 0000000..6f327d6 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/CEC6E2-We_ll_see_how_t.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/CFC37F-This_illustrate.mp3 b/jvm/src/main/resources/audio/azure/CFC37F-This_illustrate.mp3 new file mode 100644 index 0000000..52294e5 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/CFC37F-This_illustrate.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/CFDE24-Just_like_an_in.mp3 b/jvm/src/main/resources/audio/azure/CFDE24-Just_like_an_in.mp3 new file mode 100644 index 0000000..314f83c Binary files /dev/null and b/jvm/src/main/resources/audio/azure/CFDE24-Just_like_an_in.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/D0F8B9-In_this_talk__w.mp3 b/jvm/src/main/resources/audio/azure/D0F8B9-In_this_talk__w.mp3 new file mode 100644 index 0000000..64daa65 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/D0F8B9-In_this_talk__w.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/D0FF0F-As_can_be_obser.mp3 b/jvm/src/main/resources/audio/azure/D0FF0F-As_can_be_obser.mp3 new file mode 100644 index 0000000..534345e Binary files /dev/null and b/jvm/src/main/resources/audio/azure/D0FF0F-As_can_be_obser.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/D50F93-Slang_analysis_.mp3 b/jvm/src/main/resources/audio/azure/D50F93-Slang_analysis_.mp3 new file mode 100644 index 0000000..4439681 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/D50F93-Slang_analysis_.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/D72137-Using_the_GUMBO.mp3 b/jvm/src/main/resources/audio/azure/D72137-Using_the_GUMBO.mp3 new file mode 100644 index 0000000..48b8d76 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/D72137-Using_the_GUMBO.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/D74FB0-IntelliJay_prov.mp3 b/jvm/src/main/resources/audio/azure/D74FB0-IntelliJay_prov.mp3 new file mode 100644 index 0000000..abddc8b Binary files /dev/null and b/jvm/src/main/resources/audio/azure/D74FB0-IntelliJay_prov.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/DA2AAF-The_code_has_be.mp3 b/jvm/src/main/resources/audio/azure/DA2AAF-The_code_has_be.mp3 new file mode 100644 index 0000000..28a3b32 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/DA2AAF-The_code_has_be.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/DA64D1-We_can_confirm_.mp3 b/jvm/src/main/resources/audio/azure/DA64D1-We_can_confirm_.mp3 new file mode 100644 index 0000000..9d63699 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/DA64D1-We_can_confirm_.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/DA8439-That_is__even_i.mp3 b/jvm/src/main/resources/audio/azure/DA8439-That_is__even_i.mp3 new file mode 100644 index 0000000..ec2643a Binary files /dev/null and b/jvm/src/main/resources/audio/azure/DA8439-That_is__even_i.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/DAD5D3-When_the_bug_is.mp3 b/jvm/src/main/resources/audio/azure/DAD5D3-When_the_bug_is.mp3 new file mode 100644 index 0000000..29b2479 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/DAD5D3-When_the_bug_is.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/DC3855-Let_s_start_wit.mp3 b/jvm/src/main/resources/audio/azure/DC3855-Let_s_start_wit.mp3 new file mode 100644 index 0000000..a4a9c74 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/DC3855-Let_s_start_wit.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/DC637F-As_issues_are_f.mp3 b/jvm/src/main/resources/audio/azure/DC637F-As_issues_are_f.mp3 new file mode 100644 index 0000000..e5c7a82 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/DC637F-As_issues_are_f.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/DC777C-Thus__aliasing_.mp3 b/jvm/src/main/resources/audio/azure/DC777C-Thus__aliasing_.mp3 new file mode 100644 index 0000000..a10d571 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/DC777C-Thus__aliasing_.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/DC795B-However__our_vi.mp3 b/jvm/src/main/resources/audio/azure/DC795B-However__our_vi.mp3 new file mode 100644 index 0000000..4cad9e8 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/DC795B-However__our_vi.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/DCEEF0-In_closing.mp3 b/jvm/src/main/resources/audio/azure/DCEEF0-In_closing.mp3 new file mode 100644 index 0000000..3b970df Binary files /dev/null and b/jvm/src/main/resources/audio/azure/DCEEF0-In_closing.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/DE6AE7-Let_s_now_consi.mp3 b/jvm/src/main/resources/audio/azure/DE6AE7-Let_s_now_consi.mp3 new file mode 100644 index 0000000..17193ca Binary files /dev/null and b/jvm/src/main/resources/audio/azure/DE6AE7-Let_s_now_consi.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/E1D517-Here_we_see_how.mp3 b/jvm/src/main/resources/audio/azure/E1D517-Here_we_see_how.mp3 new file mode 100644 index 0000000..748e28f Binary files /dev/null and b/jvm/src/main/resources/audio/azure/E1D517-Here_we_see_how.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/E4F99D-Logeeka_in_part.mp3 b/jvm/src/main/resources/audio/azure/E4F99D-Logeeka_in_part.mp3 new file mode 100644 index 0000000..5948974 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/E4F99D-Logeeka_in_part.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/E5D463-Given_that_Hamm.mp3 b/jvm/src/main/resources/audio/azure/E5D463-Given_that_Hamm.mp3 new file mode 100644 index 0000000..d7e0c33 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/E5D463-Given_that_Hamm.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/EADE64-Also__you_have_.mp3 b/jvm/src/main/resources/audio/azure/EADE64-Also__you_have_.mp3 new file mode 100644 index 0000000..58d3051 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/EADE64-Also__you_have_.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/EE13BE-The_state_claim.mp3 b/jvm/src/main/resources/audio/azure/EE13BE-The_state_claim.mp3 new file mode 100644 index 0000000..2b7bab1 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/EE13BE-The_state_claim.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/EFCA6F-Here_s_the_exam.mp3 b/jvm/src/main/resources/audio/azure/EFCA6F-Here_s_the_exam.mp3 new file mode 100644 index 0000000..86154f1 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/EFCA6F-Here_s_the_exam.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/F472E4-Each_query_is_a.mp3 b/jvm/src/main/resources/audio/azure/F472E4-Each_query_is_a.mp3 new file mode 100644 index 0000000..cac917d Binary files /dev/null and b/jvm/src/main/resources/audio/azure/F472E4-Each_query_is_a.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/F787C0-This_is_possibl.mp3 b/jvm/src/main/resources/audio/azure/F787C0-This_is_possibl.mp3 new file mode 100644 index 0000000..ed5015e Binary files /dev/null and b/jvm/src/main/resources/audio/azure/F787C0-This_is_possibl.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/F825A7-For_example__we.mp3 b/jvm/src/main/resources/audio/azure/F825A7-For_example__we.mp3 new file mode 100644 index 0000000..04d54a3 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/F825A7-For_example__we.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/F94F49-The_example_con.mp3 b/jvm/src/main/resources/audio/azure/F94F49-The_example_con.mp3 new file mode 100644 index 0000000..c653176 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/F94F49-The_example_con.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/FB4ECC-This_incrementa.mp3 b/jvm/src/main/resources/audio/azure/FB4ECC-This_incrementa.mp3 new file mode 100644 index 0000000..4e731b8 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/FB4ECC-This_incrementa.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/FBFE77-S_E_L__4_verifi.mp3 b/jvm/src/main/resources/audio/azure/FBFE77-S_E_L__4_verifi.mp3 new file mode 100644 index 0000000..385da2d Binary files /dev/null and b/jvm/src/main/resources/audio/azure/FBFE77-S_E_L__4_verifi.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/FC6BD4-Finally__since_.mp3 b/jvm/src/main/resources/audio/azure/FC6BD4-Finally__since_.mp3 new file mode 100644 index 0000000..893822e Binary files /dev/null and b/jvm/src/main/resources/audio/azure/FC6BD4-Finally__since_.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/FEB143-Now_let_s_consi.mp3 b/jvm/src/main/resources/audio/azure/FEB143-Now_let_s_consi.mp3 new file mode 100644 index 0000000..9e0a005 Binary files /dev/null and b/jvm/src/main/resources/audio/azure/FEB143-Now_let_s_consi.mp3 differ diff --git a/jvm/src/main/resources/audio/azure/FF625E-Here__we_have_s.mp3 b/jvm/src/main/resources/audio/azure/FF625E-Here__we_have_s.mp3 new file mode 100644 index 0000000..8406c4c Binary files /dev/null and b/jvm/src/main/resources/audio/azure/FF625E-Here__we_have_s.mp3 differ diff --git a/jvm/src/main/resources/image/.gitignore b/jvm/src/main/resources/image/.gitignore new file mode 100644 index 0000000..c9ab373 --- /dev/null +++ b/jvm/src/main/resources/image/.gitignore @@ -0,0 +1 @@ +/TCCOE22-Logika diff --git a/jvm/src/main/resources/image/01-intro.png b/jvm/src/main/resources/image/01-intro.png new file mode 100644 index 0000000..bf2face Binary files /dev/null and b/jvm/src/main/resources/image/01-intro.png differ diff --git a/jvm/src/main/resources/image/02-vision-01-sel4-1.png b/jvm/src/main/resources/image/02-vision-01-sel4-1.png new file mode 100644 index 0000000..65c89aa Binary files /dev/null and b/jvm/src/main/resources/image/02-vision-01-sel4-1.png differ diff --git a/jvm/src/main/resources/image/02-vision-02-sel4-2.png b/jvm/src/main/resources/image/02-vision-02-sel4-2.png new file mode 100644 index 0000000..d22a03e Binary files /dev/null and b/jvm/src/main/resources/image/02-vision-02-sel4-2.png differ diff --git a/jvm/src/main/resources/image/02-vision-03-hamr-1.png b/jvm/src/main/resources/image/02-vision-03-hamr-1.png new file mode 100644 index 0000000..48f6625 Binary files /dev/null and b/jvm/src/main/resources/image/02-vision-03-hamr-1.png differ diff --git a/jvm/src/main/resources/image/02-vision-04-hamr-2.png b/jvm/src/main/resources/image/02-vision-04-hamr-2.png new file mode 100644 index 0000000..7db8704 Binary files /dev/null and b/jvm/src/main/resources/image/02-vision-04-hamr-2.png differ diff --git a/jvm/src/main/resources/image/02-vision-05-hamr-3.png b/jvm/src/main/resources/image/02-vision-05-hamr-3.png new file mode 100644 index 0000000..3c5d75c Binary files /dev/null and b/jvm/src/main/resources/image/02-vision-05-hamr-3.png differ diff --git a/jvm/src/main/resources/image/02-vision-06-hamr-4.png b/jvm/src/main/resources/image/02-vision-06-hamr-4.png new file mode 100644 index 0000000..24e772c Binary files /dev/null and b/jvm/src/main/resources/image/02-vision-06-hamr-4.png differ diff --git a/jvm/src/main/resources/image/02-vision-07-hamr-aspects-1.png b/jvm/src/main/resources/image/02-vision-07-hamr-aspects-1.png new file mode 100644 index 0000000..b680a90 Binary files /dev/null and b/jvm/src/main/resources/image/02-vision-07-hamr-aspects-1.png differ diff --git a/jvm/src/main/resources/image/02-vision-08-hamr-aspects-2.png b/jvm/src/main/resources/image/02-vision-08-hamr-aspects-2.png new file mode 100644 index 0000000..11e69c9 Binary files /dev/null and b/jvm/src/main/resources/image/02-vision-08-hamr-aspects-2.png differ diff --git a/jvm/src/main/resources/image/02-vision-09-hamr-aspects-3.png b/jvm/src/main/resources/image/02-vision-09-hamr-aspects-3.png new file mode 100644 index 0000000..917f940 Binary files /dev/null and b/jvm/src/main/resources/image/02-vision-09-hamr-aspects-3.png differ diff --git a/jvm/src/main/resources/image/02-vision-10-hamr-aspects-4.png b/jvm/src/main/resources/image/02-vision-10-hamr-aspects-4.png new file mode 100644 index 0000000..57ac9de Binary files /dev/null and b/jvm/src/main/resources/image/02-vision-10-hamr-aspects-4.png differ diff --git a/jvm/src/main/resources/image/02-vision-11-hamr-aspects-5.png b/jvm/src/main/resources/image/02-vision-11-hamr-aspects-5.png new file mode 100644 index 0000000..8ab7101 Binary files /dev/null and b/jvm/src/main/resources/image/02-vision-11-hamr-aspects-5.png differ diff --git a/jvm/src/main/resources/image/02-vision-12-pl-1.png b/jvm/src/main/resources/image/02-vision-12-pl-1.png new file mode 100644 index 0000000..09c6e9b Binary files /dev/null and b/jvm/src/main/resources/image/02-vision-12-pl-1.png differ diff --git a/jvm/src/main/resources/image/02-vision-13-pl-2.png b/jvm/src/main/resources/image/02-vision-13-pl-2.png new file mode 100644 index 0000000..3352ac4 Binary files /dev/null and b/jvm/src/main/resources/image/02-vision-13-pl-2.png differ diff --git a/jvm/src/main/resources/image/02-vision-14-tool.png b/jvm/src/main/resources/image/02-vision-14-tool.png new file mode 100644 index 0000000..c08d79f Binary files /dev/null and b/jvm/src/main/resources/image/02-vision-14-tool.png differ diff --git a/jvm/src/main/resources/image/03-slang-1.png b/jvm/src/main/resources/image/03-slang-1.png new file mode 100644 index 0000000..d0ff712 Binary files /dev/null and b/jvm/src/main/resources/image/03-slang-1.png differ diff --git a/jvm/src/main/resources/image/03-slang-2.png b/jvm/src/main/resources/image/03-slang-2.png new file mode 100644 index 0000000..69b3730 Binary files /dev/null and b/jvm/src/main/resources/image/03-slang-2.png differ diff --git a/jvm/src/main/resources/image/03-slang-3.png b/jvm/src/main/resources/image/03-slang-3.png new file mode 100644 index 0000000..9c3ad1a Binary files /dev/null and b/jvm/src/main/resources/image/03-slang-3.png differ diff --git a/jvm/src/main/resources/image/03-slang-4.png b/jvm/src/main/resources/image/03-slang-4.png new file mode 100644 index 0000000..6e60df0 Binary files /dev/null and b/jvm/src/main/resources/image/03-slang-4.png differ diff --git a/jvm/src/main/resources/image/04-logika-1.png b/jvm/src/main/resources/image/04-logika-1.png new file mode 100644 index 0000000..5a78000 Binary files /dev/null and b/jvm/src/main/resources/image/04-logika-1.png differ diff --git a/jvm/src/main/resources/image/04-logika-2.png b/jvm/src/main/resources/image/04-logika-2.png new file mode 100644 index 0000000..be5e6a9 Binary files /dev/null and b/jvm/src/main/resources/image/04-logika-2.png differ diff --git a/jvm/src/main/resources/image/04-logika-3.png b/jvm/src/main/resources/image/04-logika-3.png new file mode 100644 index 0000000..bf1fc00 Binary files /dev/null and b/jvm/src/main/resources/image/04-logika-3.png differ diff --git a/jvm/src/main/resources/image/04-logika-4.png b/jvm/src/main/resources/image/04-logika-4.png new file mode 100644 index 0000000..0fd2b78 Binary files /dev/null and b/jvm/src/main/resources/image/04-logika-4.png differ diff --git a/jvm/src/main/resources/image/04-logika-5.png b/jvm/src/main/resources/image/04-logika-5.png new file mode 100644 index 0000000..d7a3858 Binary files /dev/null and b/jvm/src/main/resources/image/04-logika-5.png differ diff --git a/jvm/src/main/resources/image/05-logika-themes-1.png b/jvm/src/main/resources/image/05-logika-themes-1.png new file mode 100644 index 0000000..ae4cba5 Binary files /dev/null and b/jvm/src/main/resources/image/05-logika-themes-1.png differ diff --git a/jvm/src/main/resources/image/05-logika-themes-2.png b/jvm/src/main/resources/image/05-logika-themes-2.png new file mode 100644 index 0000000..071fc6a Binary files /dev/null and b/jvm/src/main/resources/image/05-logika-themes-2.png differ diff --git a/jvm/src/main/resources/image/07-education.png b/jvm/src/main/resources/image/07-education.png new file mode 100644 index 0000000..a87c221 Binary files /dev/null and b/jvm/src/main/resources/image/07-education.png differ diff --git a/jvm/src/main/resources/image/09-logika-themes-incremental.png b/jvm/src/main/resources/image/09-logika-themes-incremental.png new file mode 100644 index 0000000..324347b Binary files /dev/null and b/jvm/src/main/resources/image/09-logika-themes-incremental.png differ diff --git a/jvm/src/main/resources/image/10-codebase-1.png b/jvm/src/main/resources/image/10-codebase-1.png new file mode 100644 index 0000000..f5c80a4 Binary files /dev/null and b/jvm/src/main/resources/image/10-codebase-1.png differ diff --git a/jvm/src/main/resources/image/10-codebase-2.png b/jvm/src/main/resources/image/10-codebase-2.png new file mode 100644 index 0000000..1d10689 Binary files /dev/null and b/jvm/src/main/resources/image/10-codebase-2.png differ diff --git a/jvm/src/main/resources/image/10-codebase-3.png b/jvm/src/main/resources/image/10-codebase-3.png new file mode 100644 index 0000000..78d50bc Binary files /dev/null and b/jvm/src/main/resources/image/10-codebase-3.png differ diff --git a/jvm/src/main/resources/image/10-codebase-4.png b/jvm/src/main/resources/image/10-codebase-4.png new file mode 100644 index 0000000..efa18aa Binary files /dev/null and b/jvm/src/main/resources/image/10-codebase-4.png differ diff --git a/jvm/src/main/resources/image/10-codebase-5.png b/jvm/src/main/resources/image/10-codebase-5.png new file mode 100644 index 0000000..bb07995 Binary files /dev/null and b/jvm/src/main/resources/image/10-codebase-5.png differ diff --git a/jvm/src/main/resources/image/11-codebase-graph.png b/jvm/src/main/resources/image/11-codebase-graph.png new file mode 100644 index 0000000..dbbea67 Binary files /dev/null and b/jvm/src/main/resources/image/11-codebase-graph.png differ diff --git a/jvm/src/main/resources/image/13-incremental-1.png b/jvm/src/main/resources/image/13-incremental-1.png new file mode 100644 index 0000000..2c49d95 Binary files /dev/null and b/jvm/src/main/resources/image/13-incremental-1.png differ diff --git a/jvm/src/main/resources/image/13-incremental-2.png b/jvm/src/main/resources/image/13-incremental-2.png new file mode 100644 index 0000000..c7af3c8 Binary files /dev/null and b/jvm/src/main/resources/image/13-incremental-2.png differ diff --git a/jvm/src/main/resources/image/13-incremental-3.png b/jvm/src/main/resources/image/13-incremental-3.png new file mode 100644 index 0000000..01045aa Binary files /dev/null and b/jvm/src/main/resources/image/13-incremental-3.png differ diff --git a/jvm/src/main/resources/image/13-incremental-4.png b/jvm/src/main/resources/image/13-incremental-4.png new file mode 100644 index 0000000..b65a1f6 Binary files /dev/null and b/jvm/src/main/resources/image/13-incremental-4.png differ diff --git a/jvm/src/main/resources/image/14-hamr-abstraction-1.png b/jvm/src/main/resources/image/14-hamr-abstraction-1.png new file mode 100644 index 0000000..2a2088b Binary files /dev/null and b/jvm/src/main/resources/image/14-hamr-abstraction-1.png differ diff --git a/jvm/src/main/resources/image/14-hamr-abstraction-2.png b/jvm/src/main/resources/image/14-hamr-abstraction-2.png new file mode 100644 index 0000000..996e74e Binary files /dev/null and b/jvm/src/main/resources/image/14-hamr-abstraction-2.png differ diff --git a/jvm/src/main/resources/image/14-hamr-abstraction-3.png b/jvm/src/main/resources/image/14-hamr-abstraction-3.png new file mode 100644 index 0000000..e49c07a Binary files /dev/null and b/jvm/src/main/resources/image/14-hamr-abstraction-3.png differ diff --git a/jvm/src/main/resources/image/14-hamr-abstraction-4.png b/jvm/src/main/resources/image/14-hamr-abstraction-4.png new file mode 100644 index 0000000..045965d Binary files /dev/null and b/jvm/src/main/resources/image/14-hamr-abstraction-4.png differ diff --git a/jvm/src/main/resources/image/15-temp-control-1.png b/jvm/src/main/resources/image/15-temp-control-1.png new file mode 100644 index 0000000..f473f23 Binary files /dev/null and b/jvm/src/main/resources/image/15-temp-control-1.png differ diff --git a/jvm/src/main/resources/image/15-temp-control-2.png b/jvm/src/main/resources/image/15-temp-control-2.png new file mode 100644 index 0000000..05b7f03 Binary files /dev/null and b/jvm/src/main/resources/image/15-temp-control-2.png differ diff --git a/jvm/src/main/resources/image/15-temp-control-3.png b/jvm/src/main/resources/image/15-temp-control-3.png new file mode 100644 index 0000000..c8ca14a Binary files /dev/null and b/jvm/src/main/resources/image/15-temp-control-3.png differ diff --git a/jvm/src/main/resources/image/16-gumbo-1.png b/jvm/src/main/resources/image/16-gumbo-1.png new file mode 100644 index 0000000..cd80516 Binary files /dev/null and b/jvm/src/main/resources/image/16-gumbo-1.png differ diff --git a/jvm/src/main/resources/image/16-gumbo-2.png b/jvm/src/main/resources/image/16-gumbo-2.png new file mode 100644 index 0000000..ca48672 Binary files /dev/null and b/jvm/src/main/resources/image/16-gumbo-2.png differ diff --git a/jvm/src/main/resources/image/18-logika-themes-parallel.png b/jvm/src/main/resources/image/18-logika-themes-parallel.png new file mode 100644 index 0000000..4e52c81 Binary files /dev/null and b/jvm/src/main/resources/image/18-logika-themes-parallel.png differ diff --git a/jvm/src/main/resources/image/19-parallel-1.png b/jvm/src/main/resources/image/19-parallel-1.png new file mode 100644 index 0000000..8b2d487 Binary files /dev/null and b/jvm/src/main/resources/image/19-parallel-1.png differ diff --git a/jvm/src/main/resources/image/19-parallel-2.png b/jvm/src/main/resources/image/19-parallel-2.png new file mode 100644 index 0000000..4131568 Binary files /dev/null and b/jvm/src/main/resources/image/19-parallel-2.png differ diff --git a/jvm/src/main/resources/image/19-parallel-3.png b/jvm/src/main/resources/image/19-parallel-3.png new file mode 100644 index 0000000..191cd93 Binary files /dev/null and b/jvm/src/main/resources/image/19-parallel-3.png differ diff --git a/jvm/src/main/resources/image/19-parallel-4.png b/jvm/src/main/resources/image/19-parallel-4.png new file mode 100644 index 0000000..9f13c73 Binary files /dev/null and b/jvm/src/main/resources/image/19-parallel-4.png differ diff --git a/jvm/src/main/resources/image/19-parallel-5.png b/jvm/src/main/resources/image/19-parallel-5.png new file mode 100644 index 0000000..408c0d0 Binary files /dev/null and b/jvm/src/main/resources/image/19-parallel-5.png differ diff --git a/jvm/src/main/resources/image/21-proof-engineering-1.png b/jvm/src/main/resources/image/21-proof-engineering-1.png new file mode 100644 index 0000000..828c5fb Binary files /dev/null and b/jvm/src/main/resources/image/21-proof-engineering-1.png differ diff --git a/jvm/src/main/resources/image/21-proof-engineering-2.png b/jvm/src/main/resources/image/21-proof-engineering-2.png new file mode 100644 index 0000000..3719f8a Binary files /dev/null and b/jvm/src/main/resources/image/21-proof-engineering-2.png differ diff --git a/jvm/src/main/resources/image/22-conclusion.png b/jvm/src/main/resources/image/22-conclusion.png new file mode 100644 index 0000000..f44f043 Binary files /dev/null and b/jvm/src/main/resources/image/22-conclusion.png differ diff --git a/jvm/src/main/resources/image/23-end.png b/jvm/src/main/resources/image/23-end.png new file mode 100644 index 0000000..b9be317 Binary files /dev/null and b/jvm/src/main/resources/image/23-end.png differ diff --git a/jvm/src/main/resources/video/.gitignore b/jvm/src/main/resources/video/.gitignore new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/jvm/src/main/resources/video/.gitignore @@ -0,0 +1 @@ + diff --git a/jvm/src/main/resources/video/06-demo-logika-intro.mp4 b/jvm/src/main/resources/video/06-demo-logika-intro.mp4 new file mode 100644 index 0000000..afded50 Binary files /dev/null and b/jvm/src/main/resources/video/06-demo-logika-intro.mp4 differ diff --git a/jvm/src/main/resources/video/06-demo-logika.mp4 b/jvm/src/main/resources/video/06-demo-logika.mp4 new file mode 100644 index 0000000..ee588a8 Binary files /dev/null and b/jvm/src/main/resources/video/06-demo-logika.mp4 differ diff --git a/jvm/src/main/resources/video/08-education-web.mp4 b/jvm/src/main/resources/video/08-education-web.mp4 new file mode 100644 index 0000000..6081cf9 Binary files /dev/null and b/jvm/src/main/resources/video/08-education-web.mp4 differ diff --git a/jvm/src/main/resources/video/12-codebase-incremental.mp4 b/jvm/src/main/resources/video/12-codebase-incremental.mp4 new file mode 100644 index 0000000..12db911 Binary files /dev/null and b/jvm/src/main/resources/video/12-codebase-incremental.mp4 differ diff --git a/jvm/src/main/resources/video/17-demo-temp-control.mp4 b/jvm/src/main/resources/video/17-demo-temp-control.mp4 new file mode 100644 index 0000000..8bb09f5 Binary files /dev/null and b/jvm/src/main/resources/video/17-demo-temp-control.mp4 differ diff --git a/jvm/src/main/resources/video/20-demo-logika-legion.mp4 b/jvm/src/main/resources/video/20-demo-logika-legion.mp4 new file mode 100644 index 0000000..4e68a33 Binary files /dev/null and b/jvm/src/main/resources/video/20-demo-logika-legion.mp4 differ diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..ce0e97f --- /dev/null +++ b/readme.md @@ -0,0 +1,37 @@ +# 2022 TCCoE Logika Presentation + +This repository holds the Sireum Presentasi source and pre-built binary of the +[2022 Trusted Computing Center of Excellence (TCCoE)](https://hopin.com/events/tccoe-2022-summit) talk on Logika, +titled "Integrated Formal Verification Environment for seL4 Applications". + + +## How To Watch The Presentation + +Install [Sireum](https://github.com/sireum/kekinian), then execute the following in a terminal inside this repo +local directory: + +* macOS: + + ```bash + $SIREUM_HOME/sireum proyek run . Presentasi + ``` + +* Windows: + + ```cmd + %SIREUM_HOME%\sireum proyek run . Presentasi + ``` + +Alternatively, you can also download the pre-built jar at: + +https://github.com/sireum/tccoe22-logika/releases/download/final/tccoe22-logika.jar + +which can be run on macOS or Windows by using any Java 11+ with JavaFX: + +``` +java -jar tccoe22-logika.jar +``` + +Finally, a pre-recorded Presentasi video is also available at: + +https://github.com/sireum/tccoe22-logika/releases/download/final/tccoe22-logika.mp4