Molecular Quantum Particle Algorithm (MQPA): Comprehensive
Technical Document
1. Overview and Development History
MQPA—Molecular Quantum Particle Algorithm—is an original
quantum-classical hybrid framework developed by Jessica McPhaul over a
full year of interdisciplinary work. It was designed to simulate,
predict, and visualize particle-level interactions within environmental
systems using quantum computing, GIS datasets, and AI interpretation
layers. MQPA was conceived as a solution to the limitations of classical
models in understanding complex particle behavior—especially under
dynamic environmental conditions like storms, pressure shifts, and
chemical diffusion.
Over time, it evolved into a scalable system that can integrate data
from NASA LiDAR, NOAA storm paths, OpenAQ air quality indices, and QM9
molecular records. The algorithm was further enhanced using MTQC
(Multi-Target Quantum Compilation), enabling parallel simulation across
multiple quantum environments. MQPA now acts as the computational
backbone for Jessi.chat—a quantum-interpreting AI assistant built to
translate circuit results into human-readable insights for real-world
decision-making.
2. Purpose and Practical Application
MQPA’s goal is to model how particles—molecules, pollutants,
atmospheric elements—behave in real or simulated geospatial
environments. It enables:
- Storm-induced particle drift simulation
- Post-hurricane flood pattern forecasting
- Methane leak dispersion modeling after seismic
events
- Air quality prediction during compound weather
phenomena
- Quantum-guided environmental mapping overlays
Through integration with GIS (Geographic Information Systems), MQPA
uses terrain and sensor data to localize molecular models, making them
spatially and temporally aware.
3. Quantum Foundations Underpinning MQPA
MQPA is built on key quantum computing principles:
Qubits: Instead of bits, MQPA uses qubits
capable of representing |0⟩, |1⟩, or a superposition α|0⟩ +
β|1⟩.
Superposition: Allows each qubit to explore
multiple states simultaneously, ideal for probabilistic environmental
modeling.
Entanglement: Qubits are entangled using gates
like CX to mirror interdependent particle behaviors—e.g., molecular
bonding or scattering reactions.
Measurement and Collapse: Probabilistic outcomes
of qubit states reflect possible states of particle systems—interpreted
classically post-simulation.
4. Quantum Gate Design in MQPA
MQPA circuits are built using a standard three-qubit layout, with
gate operations driven by preprocessed data:
H (Hadamard): Applied to the first qubit to
initiate superposition—mimicking molecular uncertainty.
CX (CNOT): Entangles qubits, creating dependent
particle relationships.
RX, RY, RZ: Rotational gates encode scaled
molecular or environmental features.
- RX(θ): Encodes temperature or particle velocity
- RY(θ): Encodes wind direction or bond angle
- RZ(θ): Encodes humidity, electric charge, or field potential
Measurement: Outputs reflect likely particle
states. The most probable state is passed to an interpretive layer
(Jessi.chat).
5. Mathematical Foundation
Let the input feature vector \(\vec{x} =
[x_1, x_2, x_3]\) represent normalized environmental features.
Scaling is applied as:
\[
\hat{x}_i = \frac{x_i - \mu}{\sigma}
\]
These values become gate parameters: RX(𝑥₁), RY(𝑥₂), RZ(𝑥₃). The
overall circuit \(U(\vec{x})\) is
defined as:
\[
U(\vec{x}) = M \cdot RZ(\hat{x}_3) \cdot RY(\hat{x}_2) \cdot
RX(\hat{x}_1) \cdot CX \cdot H
\]
Where M denotes the measurement operator. The resulting quantum state
vector is sampled, and output probabilities are used to classify
particle behavior using:
\[
P(state_i) = |\langle state_i | \psi_{final} \rangle|^2
\]
The top state is then translated into a scenario (e.g., “Unstable
molecule under storm pressure”).
6. Scaling with MTQC
MTQC allows MQPA to run multi-instance quantum simulations in
parallel. Rather than simulating one particle system at a time,
MTQC compiles dozens of quantum circuits simultaneously, each
representing different weather conditions, molecular variants, or
geospatial parameters.
Example:
In a Dallas flood zone scenario, MTQC ran 32 parallel MQPA circuits—each
with slightly altered inputs for wind speed, humidity, terrain
elevation. The result was a probabilistic heatmap showing the
highest-risk air quality zones, updated in near real-time.
7. Real-World Dataset Integration
MQPA has been applied across the following datasets:
- NASA LiDAR – Elevation, terrain slope, structural
features
- QM9 – Molecular weights, HOMO/LUMO, dipole
moments
- NOAA Storm Tracks – Wind pressure, storm path,
precipitation
- OpenAQ – PM2.5, PM10, NO₂, O₃ real-time air quality
readings
- Sensor Logs – Collected from storm surges and
hurricanes
Each dataset is preprocessed classically (NumPy, pandas), scaled, and
mapped to quantum gate parameters. Simulation results are reprojected
into GIS space as tiles, heatmaps, or animation overlays.
8. Implementation Tools
MQPA is developed with:
- Qiskit – For circuit construction, transpilation,
simulation
- Quokka – Lightweight framework to test across
backends (IBM Q, local Aer, Braket)
- Blender – For real-time 3D particle visualization
using Geometry Nodes
- JupyterLab – For preprocessing, experimentation,
debugging
- Hugging Face + Jessi.chat – For NLP-driven
explanation of quantum results
9. Jessi.chat: The Interpretive Layer
Jessi.chat is more than a chatbot—it’s an AI
translator for quantum states. After MQPA outputs qubit
measurement counts, Jessi.chat converts the highest-probability state
into plain-English summaries like:
- “Stable molecule under current conditions.”
- “Scattering event likely due to wind shear.”
- “Reactive configuration detected—risk of chain bonding.”
It uses fine-tuned GPT and BERT layers to explain these outputs
clearly to researchers, scientists, and decision-makers.
10. Limitations and Future Enhancements
Quantum Hardware Noise: Still limits live
deployment. Simulators help, but real-time on QPUs is still constrained
by queue times, decoherence, and gate fidelity.
Scalability: MTQC solves some of this, but
current QPUs limit qubit count and entanglement depth.
Visual Integration: Blender node conversion is
still semi-manual. Automation with QASM-to-geometry bridge is a future
milestone.
Deployment: Currently operates on hybrid cloud;
long-term vision is a deployable interface for researchers, disaster
response teams, and environmental agencies.
Conclusion
MQPA is not just a quantum experiment—it’s a functional framework
built to model particle behavior in dynamic, geospatially-anchored
environments. When paired with MTQC, real datasets, and Jessi.chat, it
becomes a decision-support engine for forecasting, risk mapping, and
molecular interaction analysis—driven by quantum computing. From storm
modeling to particle drift to air quality prediction, MQPA has proven
capable of expanding what we can simulate and understand. Its future
lies in integration—with agencies, industry, and researchers across
climate, defense, and science.
LS0tDQp0aXRsZTogIkpFU1NJIEFHRU5UIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KDQoqKk1vbGVjdWxhciBRdWFudHVtIFBhcnRpY2xlIEFsZ29yaXRobSAoTVFQQSk6IENvbXByZWhlbnNpdmUgVGVjaG5pY2FsIERvY3VtZW50KioNCg0KLS0tDQoNCioqMS4gT3ZlcnZpZXcgYW5kIERldmVsb3BtZW50IEhpc3RvcnkqKg0KDQpNUVBB4oCUTW9sZWN1bGFyIFF1YW50dW0gUGFydGljbGUgQWxnb3JpdGht4oCUaXMgYW4gb3JpZ2luYWwgcXVhbnR1bS1jbGFzc2ljYWwgaHlicmlkIGZyYW1ld29yayBkZXZlbG9wZWQgYnkgSmVzc2ljYSBNY1BoYXVsIG92ZXIgYSBmdWxsIHllYXIgb2YgaW50ZXJkaXNjaXBsaW5hcnkgd29yay4gSXQgd2FzIGRlc2lnbmVkIHRvIHNpbXVsYXRlLCBwcmVkaWN0LCBhbmQgdmlzdWFsaXplIHBhcnRpY2xlLWxldmVsIGludGVyYWN0aW9ucyB3aXRoaW4gZW52aXJvbm1lbnRhbCBzeXN0ZW1zIHVzaW5nIHF1YW50dW0gY29tcHV0aW5nLCBHSVMgZGF0YXNldHMsIGFuZCBBSSBpbnRlcnByZXRhdGlvbiBsYXllcnMuIE1RUEEgd2FzIGNvbmNlaXZlZCBhcyBhIHNvbHV0aW9uIHRvIHRoZSBsaW1pdGF0aW9ucyBvZiBjbGFzc2ljYWwgbW9kZWxzIGluIHVuZGVyc3RhbmRpbmcgY29tcGxleCBwYXJ0aWNsZSBiZWhhdmlvcuKAlGVzcGVjaWFsbHkgdW5kZXIgZHluYW1pYyBlbnZpcm9ubWVudGFsIGNvbmRpdGlvbnMgbGlrZSBzdG9ybXMsIHByZXNzdXJlIHNoaWZ0cywgYW5kIGNoZW1pY2FsIGRpZmZ1c2lvbi4NCg0KT3ZlciB0aW1lLCBpdCBldm9sdmVkIGludG8gYSBzY2FsYWJsZSBzeXN0ZW0gdGhhdCBjYW4gaW50ZWdyYXRlIGRhdGEgZnJvbSBOQVNBIExpREFSLCBOT0FBIHN0b3JtIHBhdGhzLCBPcGVuQVEgYWlyIHF1YWxpdHkgaW5kaWNlcywgYW5kIFFNOSBtb2xlY3VsYXIgcmVjb3Jkcy4gVGhlIGFsZ29yaXRobSB3YXMgZnVydGhlciBlbmhhbmNlZCB1c2luZyBNVFFDIChNdWx0aS1UYXJnZXQgUXVhbnR1bSBDb21waWxhdGlvbiksIGVuYWJsaW5nIHBhcmFsbGVsIHNpbXVsYXRpb24gYWNyb3NzIG11bHRpcGxlIHF1YW50dW0gZW52aXJvbm1lbnRzLiBNUVBBIG5vdyBhY3RzIGFzIHRoZSBjb21wdXRhdGlvbmFsIGJhY2tib25lIGZvciBKZXNzaS5jaGF04oCUYSBxdWFudHVtLWludGVycHJldGluZyBBSSBhc3Npc3RhbnQgYnVpbHQgdG8gdHJhbnNsYXRlIGNpcmN1aXQgcmVzdWx0cyBpbnRvIGh1bWFuLXJlYWRhYmxlIGluc2lnaHRzIGZvciByZWFsLXdvcmxkIGRlY2lzaW9uLW1ha2luZy4NCg0KLS0tDQoNCioqMi4gUHVycG9zZSBhbmQgUHJhY3RpY2FsIEFwcGxpY2F0aW9uKioNCg0KTVFQQSdzIGdvYWwgaXMgdG8gbW9kZWwgaG93IHBhcnRpY2xlc+KAlG1vbGVjdWxlcywgcG9sbHV0YW50cywgYXRtb3NwaGVyaWMgZWxlbWVudHPigJRiZWhhdmUgaW4gcmVhbCBvciBzaW11bGF0ZWQgZ2Vvc3BhdGlhbCBlbnZpcm9ubWVudHMuIEl0IGVuYWJsZXM6DQoNCi0gKipTdG9ybS1pbmR1Y2VkIHBhcnRpY2xlIGRyaWZ0IHNpbXVsYXRpb24qKiAgDQotICoqUG9zdC1odXJyaWNhbmUgZmxvb2QgcGF0dGVybiBmb3JlY2FzdGluZyoqICANCi0gKipNZXRoYW5lIGxlYWsgZGlzcGVyc2lvbiBtb2RlbGluZyBhZnRlciBzZWlzbWljIGV2ZW50cyoqICANCi0gKipBaXIgcXVhbGl0eSBwcmVkaWN0aW9uIGR1cmluZyBjb21wb3VuZCB3ZWF0aGVyIHBoZW5vbWVuYSoqICANCi0gKipRdWFudHVtLWd1aWRlZCBlbnZpcm9ubWVudGFsIG1hcHBpbmcgb3ZlcmxheXMqKiAgDQoNClRocm91Z2ggaW50ZWdyYXRpb24gd2l0aCBHSVMgKEdlb2dyYXBoaWMgSW5mb3JtYXRpb24gU3lzdGVtcyksIE1RUEEgdXNlcyB0ZXJyYWluIGFuZCBzZW5zb3IgZGF0YSB0byBsb2NhbGl6ZSBtb2xlY3VsYXIgbW9kZWxzLCBtYWtpbmcgdGhlbSBzcGF0aWFsbHkgYW5kIHRlbXBvcmFsbHkgYXdhcmUuDQoNCi0tLQ0KDQoqKjMuIFF1YW50dW0gRm91bmRhdGlvbnMgVW5kZXJwaW5uaW5nIE1RUEEqKg0KDQpNUVBBIGlzIGJ1aWx0IG9uIGtleSBxdWFudHVtIGNvbXB1dGluZyBwcmluY2lwbGVzOg0KDQotICoqUXViaXRzKio6IEluc3RlYWQgb2YgYml0cywgTVFQQSB1c2VzIHF1Yml0cyBjYXBhYmxlIG9mIHJlcHJlc2VudGluZyB8MOKfqSwgfDHin6ksIG9yIGEgc3VwZXJwb3NpdGlvbiDOsXww4p+pICsgzrJ8MeKfqS4NCiAgDQotICoqU3VwZXJwb3NpdGlvbioqOiBBbGxvd3MgZWFjaCBxdWJpdCB0byBleHBsb3JlIG11bHRpcGxlIHN0YXRlcyBzaW11bHRhbmVvdXNseSwgaWRlYWwgZm9yIHByb2JhYmlsaXN0aWMgZW52aXJvbm1lbnRhbCBtb2RlbGluZy4NCiAgDQotICoqRW50YW5nbGVtZW50Kio6IFF1Yml0cyBhcmUgZW50YW5nbGVkIHVzaW5nIGdhdGVzIGxpa2UgQ1ggdG8gbWlycm9yIGludGVyZGVwZW5kZW50IHBhcnRpY2xlIGJlaGF2aW9yc+KAlGUuZy4sIG1vbGVjdWxhciBib25kaW5nIG9yIHNjYXR0ZXJpbmcgcmVhY3Rpb25zLg0KICANCi0gKipNZWFzdXJlbWVudCBhbmQgQ29sbGFwc2UqKjogUHJvYmFiaWxpc3RpYyBvdXRjb21lcyBvZiBxdWJpdCBzdGF0ZXMgcmVmbGVjdCBwb3NzaWJsZSBzdGF0ZXMgb2YgcGFydGljbGUgc3lzdGVtc+KAlGludGVycHJldGVkIGNsYXNzaWNhbGx5IHBvc3Qtc2ltdWxhdGlvbi4NCg0KLS0tDQoNCioqNC4gUXVhbnR1bSBHYXRlIERlc2lnbiBpbiBNUVBBKioNCg0KTVFQQSBjaXJjdWl0cyBhcmUgYnVpbHQgdXNpbmcgYSBzdGFuZGFyZCB0aHJlZS1xdWJpdCBsYXlvdXQsIHdpdGggZ2F0ZSBvcGVyYXRpb25zIGRyaXZlbiBieSBwcmVwcm9jZXNzZWQgZGF0YToNCg0KLSAqKkggKEhhZGFtYXJkKSoqOiBBcHBsaWVkIHRvIHRoZSBmaXJzdCBxdWJpdCB0byBpbml0aWF0ZSBzdXBlcnBvc2l0aW9u4oCUbWltaWNraW5nIG1vbGVjdWxhciB1bmNlcnRhaW50eS4NCg0KLSAqKkNYIChDTk9UKSoqOiBFbnRhbmdsZXMgcXViaXRzLCBjcmVhdGluZyBkZXBlbmRlbnQgcGFydGljbGUgcmVsYXRpb25zaGlwcy4NCg0KLSAqKlJYLCBSWSwgUloqKjogUm90YXRpb25hbCBnYXRlcyBlbmNvZGUgc2NhbGVkIG1vbGVjdWxhciBvciBlbnZpcm9ubWVudGFsIGZlYXR1cmVzLiAgDQogIC0gUlgozrgpOiBFbmNvZGVzIHRlbXBlcmF0dXJlIG9yIHBhcnRpY2xlIHZlbG9jaXR5ICANCiAgLSBSWSjOuCk6IEVuY29kZXMgd2luZCBkaXJlY3Rpb24gb3IgYm9uZCBhbmdsZSAgDQogIC0gUloozrgpOiBFbmNvZGVzIGh1bWlkaXR5LCBlbGVjdHJpYyBjaGFyZ2UsIG9yIGZpZWxkIHBvdGVudGlhbA0KDQotICoqTWVhc3VyZW1lbnQqKjogT3V0cHV0cyByZWZsZWN0IGxpa2VseSBwYXJ0aWNsZSBzdGF0ZXMuIFRoZSBtb3N0IHByb2JhYmxlIHN0YXRlIGlzIHBhc3NlZCB0byBhbiBpbnRlcnByZXRpdmUgbGF5ZXIgKEplc3NpLmNoYXQpLg0KDQotLS0NCg0KKio1LiBNYXRoZW1hdGljYWwgRm91bmRhdGlvbioqDQoNCkxldCB0aGUgaW5wdXQgZmVhdHVyZSB2ZWN0b3IgXCggXHZlY3t4fSA9IFt4XzEsIHhfMiwgeF8zXSBcKSByZXByZXNlbnQgbm9ybWFsaXplZCBlbnZpcm9ubWVudGFsIGZlYXR1cmVzLiBTY2FsaW5nIGlzIGFwcGxpZWQgYXM6DQoNClxbDQpcaGF0e3h9X2kgPSBcZnJhY3t4X2kgLSBcbXV9e1xzaWdtYX0NClxdDQoNClRoZXNlIHZhbHVlcyBiZWNvbWUgZ2F0ZSBwYXJhbWV0ZXJzOiBSWCjwnZGl4oKBKSwgUlko8J2RpeKCgiksIFJaKPCdkaXigoMpLiBUaGUgb3ZlcmFsbCBjaXJjdWl0IFwoIFUoXHZlY3t4fSkgXCkgaXMgZGVmaW5lZCBhczoNCg0KXFsNClUoXHZlY3t4fSkgPSBNIFxjZG90IFJaKFxoYXR7eH1fMykgXGNkb3QgUlkoXGhhdHt4fV8yKSBcY2RvdCBSWChcaGF0e3h9XzEpIFxjZG90IENYIFxjZG90IEgNClxdDQoNCldoZXJlIE0gZGVub3RlcyB0aGUgbWVhc3VyZW1lbnQgb3BlcmF0b3IuIFRoZSByZXN1bHRpbmcgcXVhbnR1bSBzdGF0ZSB2ZWN0b3IgaXMgc2FtcGxlZCwgYW5kIG91dHB1dCBwcm9iYWJpbGl0aWVzIGFyZSB1c2VkIHRvIGNsYXNzaWZ5IHBhcnRpY2xlIGJlaGF2aW9yIHVzaW5nOg0KDQpcWw0KUChzdGF0ZV9pKSA9IHxcbGFuZ2xlIHN0YXRlX2kgfCBccHNpX3tmaW5hbH0gXHJhbmdsZXxeMg0KXF0NCg0KVGhlIHRvcCBzdGF0ZSBpcyB0aGVuIHRyYW5zbGF0ZWQgaW50byBhIHNjZW5hcmlvIChlLmcuLCDigJxVbnN0YWJsZSBtb2xlY3VsZSB1bmRlciBzdG9ybSBwcmVzc3VyZeKAnSkuDQoNCi0tLQ0KDQoqKjYuIFNjYWxpbmcgd2l0aCBNVFFDKioNCg0KTVRRQyBhbGxvd3MgTVFQQSB0byBydW4gKiptdWx0aS1pbnN0YW5jZSBxdWFudHVtIHNpbXVsYXRpb25zIGluIHBhcmFsbGVsKiouIFJhdGhlciB0aGFuIHNpbXVsYXRpbmcgb25lIHBhcnRpY2xlIHN5c3RlbSBhdCBhIHRpbWUsIE1UUUMgY29tcGlsZXMgZG96ZW5zIG9mIHF1YW50dW0gY2lyY3VpdHMgc2ltdWx0YW5lb3VzbHksIGVhY2ggcmVwcmVzZW50aW5nIGRpZmZlcmVudCB3ZWF0aGVyIGNvbmRpdGlvbnMsIG1vbGVjdWxhciB2YXJpYW50cywgb3IgZ2Vvc3BhdGlhbCBwYXJhbWV0ZXJzLg0KDQpFeGFtcGxlOiAgDQpJbiBhIERhbGxhcyBmbG9vZCB6b25lIHNjZW5hcmlvLCBNVFFDIHJhbiAzMiBwYXJhbGxlbCBNUVBBIGNpcmN1aXRz4oCUZWFjaCB3aXRoIHNsaWdodGx5IGFsdGVyZWQgaW5wdXRzIGZvciB3aW5kIHNwZWVkLCBodW1pZGl0eSwgdGVycmFpbiBlbGV2YXRpb24uIFRoZSByZXN1bHQgd2FzIGEgcHJvYmFiaWxpc3RpYyBoZWF0bWFwIHNob3dpbmcgdGhlIGhpZ2hlc3QtcmlzayBhaXIgcXVhbGl0eSB6b25lcywgdXBkYXRlZCBpbiBuZWFyIHJlYWwtdGltZS4NCg0KLS0tDQoNCioqNy4gUmVhbC1Xb3JsZCBEYXRhc2V0IEludGVncmF0aW9uKioNCg0KTVFQQSBoYXMgYmVlbiBhcHBsaWVkIGFjcm9zcyB0aGUgZm9sbG93aW5nIGRhdGFzZXRzOg0KDQotICoqTkFTQSBMaURBUioqIOKAkyBFbGV2YXRpb24sIHRlcnJhaW4gc2xvcGUsIHN0cnVjdHVyYWwgZmVhdHVyZXMgIA0KLSAqKlFNOSoqIOKAkyBNb2xlY3VsYXIgd2VpZ2h0cywgSE9NTy9MVU1PLCBkaXBvbGUgbW9tZW50cyAgDQotICoqTk9BQSBTdG9ybSBUcmFja3MqKiDigJMgV2luZCBwcmVzc3VyZSwgc3Rvcm0gcGF0aCwgcHJlY2lwaXRhdGlvbiAgDQotICoqT3BlbkFRKiog4oCTIFBNMi41LCBQTTEwLCBOT+KCgiwgT+KCgyByZWFsLXRpbWUgYWlyIHF1YWxpdHkgcmVhZGluZ3MgIA0KLSAqKlNlbnNvciBMb2dzKiog4oCTIENvbGxlY3RlZCBmcm9tIHN0b3JtIHN1cmdlcyBhbmQgaHVycmljYW5lcw0KDQpFYWNoIGRhdGFzZXQgaXMgcHJlcHJvY2Vzc2VkIGNsYXNzaWNhbGx5IChOdW1QeSwgcGFuZGFzKSwgc2NhbGVkLCBhbmQgbWFwcGVkIHRvIHF1YW50dW0gZ2F0ZSBwYXJhbWV0ZXJzLiBTaW11bGF0aW9uIHJlc3VsdHMgYXJlIHJlcHJvamVjdGVkIGludG8gR0lTIHNwYWNlIGFzIHRpbGVzLCBoZWF0bWFwcywgb3IgYW5pbWF0aW9uIG92ZXJsYXlzLg0KDQotLS0NCg0KKio4LiBJbXBsZW1lbnRhdGlvbiBUb29scyoqDQoNCk1RUEEgaXMgZGV2ZWxvcGVkIHdpdGg6DQoNCi0gKipRaXNraXQqKiDigJMgRm9yIGNpcmN1aXQgY29uc3RydWN0aW9uLCB0cmFuc3BpbGF0aW9uLCBzaW11bGF0aW9uICANCi0gKipRdW9ra2EqKiDigJMgTGlnaHR3ZWlnaHQgZnJhbWV3b3JrIHRvIHRlc3QgYWNyb3NzIGJhY2tlbmRzIChJQk0gUSwgbG9jYWwgQWVyLCBCcmFrZXQpICANCi0gKipCbGVuZGVyKiog4oCTIEZvciByZWFsLXRpbWUgM0QgcGFydGljbGUgdmlzdWFsaXphdGlvbiB1c2luZyBHZW9tZXRyeSBOb2RlcyAgDQotICoqSnVweXRlckxhYioqIOKAkyBGb3IgcHJlcHJvY2Vzc2luZywgZXhwZXJpbWVudGF0aW9uLCBkZWJ1Z2dpbmcgIA0KLSAqKkh1Z2dpbmcgRmFjZSArIEplc3NpLmNoYXQqKiDigJMgRm9yIE5MUC1kcml2ZW4gZXhwbGFuYXRpb24gb2YgcXVhbnR1bSByZXN1bHRzICANCg0KLS0tDQoNCioqOS4gSmVzc2kuY2hhdDogVGhlIEludGVycHJldGl2ZSBMYXllcioqDQoNCkplc3NpLmNoYXQgaXMgbW9yZSB0aGFuIGEgY2hhdGJvdOKAlGl04oCZcyBhbiAqKkFJIHRyYW5zbGF0b3IqKiBmb3IgcXVhbnR1bSBzdGF0ZXMuIEFmdGVyIE1RUEEgb3V0cHV0cyBxdWJpdCBtZWFzdXJlbWVudCBjb3VudHMsIEplc3NpLmNoYXQgY29udmVydHMgdGhlIGhpZ2hlc3QtcHJvYmFiaWxpdHkgc3RhdGUgaW50byBwbGFpbi1FbmdsaXNoIHN1bW1hcmllcyBsaWtlOg0KDQotIOKAnFN0YWJsZSBtb2xlY3VsZSB1bmRlciBjdXJyZW50IGNvbmRpdGlvbnMu4oCdICANCi0g4oCcU2NhdHRlcmluZyBldmVudCBsaWtlbHkgZHVlIHRvIHdpbmQgc2hlYXIu4oCdICANCi0g4oCcUmVhY3RpdmUgY29uZmlndXJhdGlvbiBkZXRlY3RlZOKAlHJpc2sgb2YgY2hhaW4gYm9uZGluZy7igJ0gIA0KDQpJdCB1c2VzIGZpbmUtdHVuZWQgR1BUIGFuZCBCRVJUIGxheWVycyB0byBleHBsYWluIHRoZXNlIG91dHB1dHMgY2xlYXJseSB0byByZXNlYXJjaGVycywgc2NpZW50aXN0cywgYW5kIGRlY2lzaW9uLW1ha2Vycy4NCg0KLS0tDQoNCioqMTAuIExpbWl0YXRpb25zIGFuZCBGdXR1cmUgRW5oYW5jZW1lbnRzKioNCg0KLSAqKlF1YW50dW0gSGFyZHdhcmUgTm9pc2UqKjogU3RpbGwgbGltaXRzIGxpdmUgZGVwbG95bWVudC4gU2ltdWxhdG9ycyBoZWxwLCBidXQgcmVhbC10aW1lIG9uIFFQVXMgaXMgc3RpbGwgY29uc3RyYWluZWQgYnkgcXVldWUgdGltZXMsIGRlY29oZXJlbmNlLCBhbmQgZ2F0ZSBmaWRlbGl0eS4NCg0KLSAqKlNjYWxhYmlsaXR5Kio6IE1UUUMgc29sdmVzIHNvbWUgb2YgdGhpcywgYnV0IGN1cnJlbnQgUVBVcyBsaW1pdCBxdWJpdCBjb3VudCBhbmQgZW50YW5nbGVtZW50IGRlcHRoLg0KDQotICoqVmlzdWFsIEludGVncmF0aW9uKio6IEJsZW5kZXIgbm9kZSBjb252ZXJzaW9uIGlzIHN0aWxsIHNlbWktbWFudWFsLiBBdXRvbWF0aW9uIHdpdGggUUFTTS10by1nZW9tZXRyeSBicmlkZ2UgaXMgYSBmdXR1cmUgbWlsZXN0b25lLg0KDQotICoqRGVwbG95bWVudCoqOiBDdXJyZW50bHkgb3BlcmF0ZXMgb24gaHlicmlkIGNsb3VkOyBsb25nLXRlcm0gdmlzaW9uIGlzIGEgZGVwbG95YWJsZSBpbnRlcmZhY2UgZm9yIHJlc2VhcmNoZXJzLCBkaXNhc3RlciByZXNwb25zZSB0ZWFtcywgYW5kIGVudmlyb25tZW50YWwgYWdlbmNpZXMuDQoNCi0tLQ0KDQoqKkNvbmNsdXNpb24qKg0KDQpNUVBBIGlzIG5vdCBqdXN0IGEgcXVhbnR1bSBleHBlcmltZW504oCUaXTigJlzIGEgZnVuY3Rpb25hbCBmcmFtZXdvcmsgYnVpbHQgdG8gbW9kZWwgcGFydGljbGUgYmVoYXZpb3IgaW4gZHluYW1pYywgZ2Vvc3BhdGlhbGx5LWFuY2hvcmVkIGVudmlyb25tZW50cy4gV2hlbiBwYWlyZWQgd2l0aCBNVFFDLCByZWFsIGRhdGFzZXRzLCBhbmQgSmVzc2kuY2hhdCwgaXQgYmVjb21lcyBhIGRlY2lzaW9uLXN1cHBvcnQgZW5naW5lIGZvciBmb3JlY2FzdGluZywgcmlzayBtYXBwaW5nLCBhbmQgbW9sZWN1bGFyIGludGVyYWN0aW9uIGFuYWx5c2lz4oCUZHJpdmVuIGJ5IHF1YW50dW0gY29tcHV0aW5nLiBGcm9tIHN0b3JtIG1vZGVsaW5nIHRvIHBhcnRpY2xlIGRyaWZ0IHRvIGFpciBxdWFsaXR5IHByZWRpY3Rpb24sIE1RUEEgaGFzIHByb3ZlbiBjYXBhYmxlIG9mIGV4cGFuZGluZyB3aGF0IHdlIGNhbiBzaW11bGF0ZSBhbmQgdW5kZXJzdGFuZC4gSXRzIGZ1dHVyZSBsaWVzIGluIGludGVncmF0aW9u4oCUd2l0aCBhZ2VuY2llcywgaW5kdXN0cnksIGFuZCByZXNlYXJjaGVycyBhY3Jvc3MgY2xpbWF0ZSwgZGVmZW5zZSwgYW5kIHNjaWVuY2UuDQoNCg==