,0x00,0x5f,0xf4]
          vmaxsh %xmm28, %xmm29, %xmm30

// CHECK: vmaxsh {sae}, %xmm28, %xmm29, %xmm30
// CHECK: encoding: [0x62,0x05,0x16,0x10,0x5f,0xf4]
          vmaxsh {sae}, %xmm28, %xmm29, %xmm30

// CHECK: vmaxsh  268435456(%rbp,%r14,8), %xmm29, %xmm30 {%k7}
// CHECK: encoding: [0x62,0x25,0x16,0x07,0x5f,0xb4,0xf5,0x00,0x00,0x00,0x10]
          vmaxsh  268435456(%rbp,%r14,8), %xmm29, %xmm30 {%k7}

// CHECK: vmaxsh  (%r9), %xmm29, %xmm30
// CHECK: encoding: [0x62,0x45,0x16,0x00,0x5f,0x31]
          vmaxsh  (%r9), %xmm29, %xmm30

// CHECK: vmaxsh  254(%rcx), %xmm29, %xmm30
// CHECK: encoding: [0x62,0x65,0x16,0x00,0x5f,0x71,0x7f]
          vmaxsh  254(%rcx), %xmm29, %xmm30

// CHECK: vmaxsh  -256(%rdx), %xmm29, %xmm30 {%k7} {z}
// CHECK: encoding: [0x62,0x65,0x16,0x87,0x5f,0x72,0x80]
          vmaxsh  -256(%rdx), %xmm29, %xmm30 {%k7} {z}

// CHECK: vminph %zmm28, %zmm29, %zmm30
// CHECK: encoding: [0x62,0x05,0x14,0x40,0x5d,0xf4]
          vminph %zmm28, %zmm29, %zmm30

// CHECK: vminph {sae}, %zmm28, %zmm29, %zmm30
// CHECK: encoding: [0x62,0x05,0x14,0x10,0x5d,0xf4]
          vminph {sae}, %zmm28, %zmm29, %zmm30

// CHECK: vminph  268435456(%rbp,%r14,8), %zmm29, %zmm30 {%k7}
// CHECK: encoding: [0x62,0x25,0x14,0x47,0x5d,0xb4,0xf5,0x00,0x00,0x00,0x10]
          vminph  268435456(%rbp,%r14,8), %zmm29, %zmm30 {%k7}

// CHECK: vminph  (%r9){1to32}, %zmm29, %zmm30
// CHECK: encoding: [0x62,0x45,0x14,0x50,0x5d,0x31]
          vminph  (%r9){1to32}, %zmm29, %zmm30

// CHECK: vminph  8128(%rcx), %zmm29, %zmm30
// CHECK: encoding: [0x62,0x65,0x14,0x40,0x5d,0x71,0x7f]
          vminph  8128(%rcx), %zmm29, %zmm30

// CHECK: vminph  -256(%rdx){1to32}, %zmm29, %zmm30 {%k7} {z}
// CHECK: encoding: [0x62,0x65,0x14,0xd7,0x5d,0x72,0x80]
          vminph  -256(%rdx){1to32}, %zmm29, %zmm30 {%k7} {z}

// CHECK: vminsh %


C7CB;C7CB;110C 1163 11AA;C7CB;110C 1163 11AA; # (쟋; 쟋; 쟋; 쟋; 쟋; ) HANGUL SYLLABLE JYAGS
C7CC;C7CC;110C 1163 11AB;C7CC;110C 1163 11AB; # (쟌; 쟌; 쟌; 쟌; 쟌; ) HANGUL SYLLABLE JYAN
C7CD;C7CD;110C 1163 11AC;C7CD;110C 1163 11AC; # (쟍; 쟍; 쟍; 쟍; 쟍; ) HANGUL SYLLABLE JYANJ
C7CE;C7CE;110C 1163 11AD;C7CE;110C 1163 11AD; # (쟎; 쟎; 쟎; 쟎; 쟎; ) HANGUL SYLLABLE JYANH
C7CF;C7CF;110C 1163 11AE;C7CF;110C 1163 11AE; # (쟏; 쟏; 쟏; 쟏; 쟏; ) HANGUL SYLLABLE JYAD
C7D0;C7D0;110C 1163 11AF;C7D0;110C 1163 11AF; # (쟐; 쟐; 쟐; 쟐; 쟐; ) HANGUL SYLLABLE JYAL
C7D1;C7D1;110C 1163 11B0;C7D1;110C 1163 11B0; # (쟑; 쟑; 쟑; 쟑; 쟑; ) HANGUL SYLLABLE JYALG
C7D2;C7D2;110C 1163 11B1;C7D2;110C 1163 11B1; # (쟒; 쟒; 쟒; 쟒; 쟒; ) HANGUL SYLLABLE JYALM
C7D3;C7D3;110C 1163 11B2;C7D3;110C 1163 11B2; # (쟓; 쟓; 쟓; 쟓; 쟓; ) HANGUL SYLLABLE JYALB
C7D4;C7D4;110C 1163 11B3;C7D4;110C 1163 11B3; # (쟔; 쟔; 쟔; 쟔; 쟔; ) HANGUL SYLLABLE JYALS
C7D5;C7D5;110C 1163 11B4;C7D5;110C 1163 11B4; # (쟕; 쟕; 쟕; 쟕; 쟕; ) HANGUL SYLLABLE JYALT
C7D6;C7D6;110C 1163 11B5;C7D6;110C 1163 11B5; # (쟖; 쟖; 쟖; 쟖; 쟖; ) HANGUL SYLLABLE JYALP
C7D7;C7D7;110C 1163 11B6;C7D7;110C 1163 11B6; # (쟗; 쟗; 쟗; 쟗; 쟗; ) HANGUL SYLLABLE JYALH
C7D8;C7D8;110C 1163 11B7;C7D8;110C 1163 11B7; # (쟘; 쟘; 쟘; 쟘; 쟘; ) HANGUL SYLLABLE JYAM
C7D9;C7D9;110C 1163 11B8;C7D9;110C 1163 11B8; # (쟙; 쟙; 쟙; 쟙; 쟙; ) HANGUL SYLLABLE JYAB
C7DA;C7DA;110C 1163 11B9;C7DA;110C 1163 11B9; # (쟚; 쟚; 쟚; 쟚; 쟚; ) HANGUL SYLLABLE JYABS
C7DB


{
    finished: false,
    letters: [
    { value: 'E', state: LetterState.Undiscovered },
    { value: 'X', state: LetterState.Undiscovered },
    { value: 'P', state: LetterState.Undiscovered },
    { value: 'L', state: LetterState.Undiscovered },
    { value: 'O', state: LetterState.Undiscovered },
    { value: 'R', state: LetterState.Undiscovered },
    { value: 'A', state: LetterState.Undiscovered },
    { value: 'D', state: LetterState.Undiscovered },
    { value: 'O', state: LetterState.Undiscovered },
    { value: 'R', state: LetterState.Undiscovered },
    { value: 'E', state: LetterState.Undiscovered },
    { value: 'S', state: LetterState.Undiscovered }
  ]},
  {
    finished: false,
    letters: [
    { value: 'T', state: LetterState.Undiscovered },
    { value: 'R', state: LetterState.Undiscovered },
    { value: 'U', state: LetterState.Undiscovered },
    { value: 'C', state: LetterState.Undiscovered },
    { value: 'H', state: LetterState.Undiscovered },
    { value: 'A', state: LetterState.Undiscovered },
    { value: 'D', state: LetterState.Undiscovered },
    { value: 'A', state: LetterState.Undiscovered }
  ]},
  {
    finished: false,
    letters: [
    { value: 'U', state: LetterState.Undiscovered },
    { value: 'S', state: LetterState.Undiscovered },
    { value: 'E', state: LetterState.Undiscovered },
    { value: 'R', state: LetterState.Undiscovered },
    { value: ' ', state: LetterState.Discovered },
    { value: 'E', state: LetterState.Undiscovered },
    { value: 'X', state: LetterState.Undiscovered },
    { value: 'P', state: LetterState.Undiscovered },
    { value: 'E', state: LetterState.Undiscovered },
    { value: 'R', state: LetterState.Undiscovered },
    { value: 'I', state: LetterState.Undiscovered },
    { value: 'E', state: LetterState.Undiscovered },
    { value: 'N', state: LetterState.Undiscovered },
    { value: 'C', state: LetterState.Undiscovered },
    { value: 'E', state: LetterState.Undiscovered }
  ]}
];
// DESTRUCTURING arrays
// splits array into multiple constants

const myHobbies = ["Drums", "Kiscica"];
const [hobby1, hobby2] = myHobbies;
console.log(hobby1);
console.log(hobby2);

// DESTRUCTURING objects

const userData = {userName: "Dani", age: 28};
const {userName, age} = userData;
console.log(userName);
console.log(age);

// ALIASING

const {userName: myName, age: myAge} = userData;
console.log(myName);
console.log(myAge);

// Template literals

const nameOfUser = "Dani";
const greeting = `This is the first line
I'm ${nameOfUser}.
Hey!!!
`;
console.log(greeting);
const ASSETS = {
    orange: './images/orange_10px.png',
    apple: './images/red_apple_10px.png',
    banana: './images/banana_10px.png'
}

export type AssetName = keyof typeof ASSETS;

interface Loaded {
    [ key: string ]: HTMLImageElement;
};

const LOADED: Loaded = {};

/**
 * Preload the images/etc used in the program.
 */
export function init( onComplete: () => void ) {
    const keys = Object.keys( ASSETS );
    const total = keys.length;
    let count = 0;

    for ( let a = 0; a < total; a++ ) {
        const key = keys[ a ] as AssetName;
        const value = ASSETS[ key ];


d
function CARGO_CRATE:onenterUnLoaded(From,Event,To,ToPointVec2)
local Angle=180
local Speed=10
local Distance=10
if From=="Loaded"then
local StartCoordinate=self.CargoCarrier:GetCoordinate()
local CargoCarrierHeading=self.CargoCarrier:GetHeading()
local CargoDeployHeading=((CargoCarrierHeading+Angle)>=360)and(CargoCarrierHeading+Angle-360)or(CargoCarrierHeading+Angle)
local CargoDeployCoord=StartCoordinate:Translate(Distance,CargoDeployHeading)
ToPointVec2=ToPointVec2 or COORDINATE:NewFromVec2({x=CargoDeployCoord.x,y=CargoDeployCoord.z})
if self.CargoObject then
self.CargoObject:ReSpawnAt(ToPointVec2,0)
self.CargoCarrier=nil
end
end
if self.OnUnLoadedCallBack then
self.OnUnLoadedCallBack(self,unpack(self.OnUnLoadedParameters))
self.OnUnLoadedCallBack=nil
end
end
function CARGO_CRATE:onenterLoaded(From,Event,To,CargoCarrier)
self.CargoCarrier=CargoCarrier
if self.CargoObject then
self:T("Destroying")
self.NoDestroy=true
self.CargoObject:Destroy(false)
end
end
function CARGO_CRATE:CanBoard()
return false
end
function CARGO_CRATE:CanUnboard()
return false
end
function CARGO_CRATE:CanSlingload()
return false
end
function CARGO_CRATE:IsInReportRadius(Coordinate)
local Distance=0
if self:IsUnLoaded()then
Distance=Coordinate:Get2DDistance(self.CargoObject:GetCoordinate())
if Distance<=self.LoadRadius then
return true
end
end
return false
end
function CARGO_CRATE:IsInLoadRadius(Coordinate)
local Distance=0
if self:IsUnLoaded()then
Distance=Coordinate:Get2DDistance(self.CargoObject:GetCoordinate())
if Distance<=self.NearRadius then
return true
end
end
return false
end
function CARGO_CRATE:GetCoordinate()
return self.CargoObject:GetCoordinate()
end
function CARGO_CRATE:IsAlive()
local Alive=true
if self:IsLoaded()then
Alive=Alive==true and self.CargoCarrier:IsAlive()
else
Alive=Alive==true and self.CargoObject:IsAlive()
end
return Alive
end
function CARGO_CRATE:RouteTo(Coordinate)
self:T({Coordinate=Coordinate})
end
function CARGO_CRATE:IsNear(CargoCarrier,NearRadius)
self:T({NearRadius=NearRadius})
return self:IsNear(CargoCarrier:GetCoordinate(),NearRadius)
end
function CARGO_CRATE:Respawn()
self:T({"Respawning crate "..self:GetName()})
if self.CargoObject then
self.CargoObject:ReSpawn()
self:__Reset(-0.1)
end
end
function CARGO_CRATE:onafterReset()
self:T({"Reset crate "..self:GetName()})
if self.CargoObject then
self:SetDeployed(false)
self:SetStartState("UnLoaded")
self.CargoCarrier=nil
_EVENTDISPATCHER:CreateEventNewCargo(self)
end
end
function CARGO_CRATE:GetTransportationMethod()
if self:IsLoaded()then
return"for unloading"
else
if self:IsUnLoaded()then
return"for loading"
else
if self:IsDeployed()then
return"delivered"
end
end
end
return""
end
end
do
CARGO_GROUP={
ClassName="CARGO_GROUP",
}
function CARGO_GROUP:New(CargoGroup,Type,Name,LoadRadius,NearRadius)
local self=BASE:Inherit(self,CARGO


023/05/17/rsrp-and-rider-2023-1-2-bug-fixes/

ReSharper と Rider 2023.1.2 がリリースされた。

このリリースでは様々な不具合の修正が行われている。

### Xamarin.Forms and Essentials now target Android 13 (in Preview) - Xamarin Blog
https://devblogs.microsoft.com/xamarin/xamarin-forms-essentials-target-android13-preview/

Xamarin.Forms と Essentials が Android 13 をターゲットにできるようになった(プレビュー)。

.NET と .NET MAUI では Android 13 がすでにサポートされている。

### Get Ready for Visual Studio at Build 2023: Join Tens of Thousands Online! - Visual Studio Blog
https://devblogs.microsoft.com/visualstudio/get-ready-for-visual-studio-at-build-2023-join-tens-of-thousands-online/

5月23日から25日にかけて行われる Microsoft Build 2023 での Visual Studio に関連するセッションなどの紹介。

## アーティクル、スライドなど

### Object Detection in ML.NET Model Builder - .NET Blog
https://devblogs.microsoft.com/dotnet/object-detection-ml-dotnet-model-builder/

ML.NET Model Builder を使用してオブジェクト検出を行う紹介。

### Get started with ChatGPT in .NET - .NET Blog
https://devblogs.microsoft.com/dotnet/get-started-chatgpt-azure-dotnet/

.NET から OpenAI API を使用するシリーズ。ChatGPT (チャットとプロンプト) についての解説。

### Sticky Scroll: Stay in the Right Context - Visual Studio Blog
https://devblogs.microsoft.com/visualstudio/sticky-scroll-stay-in-the-right-context/

Visual Studio 2022 17.6 で追加されたスティッキースクロール機能の紹介。

### Calendar Control from scratch on .NET MAUI
https://dev.to/serhii_korol_ab7776c50dba/calendar-control-from-scratch-on-net-maui-5dh6

.NET MAUI でカレンダーコントロールを一から作ってみるという記事。

### Using Octokit.GraphQL to interact with the GitHub discussions API
https://andrewlock.net/using-octokit-graphql-to-interact-with-the-github-discussions-api/

Octokit.GraphQL NuGet パッケージを使用して GitHub ディスカッションの API を使用する方法について。

記事ではディスカッションの取得や作成、レートリミットなどについて解説している。

### Integration tests for AWS serverless solution
https://dev.to/ohalay/integration-tests-for-aws-serverless-solution-12aj

AWS サーバーレス構成のアプリケーションを統合テストする方法について。

LocalStack を使用してローカルコンテナーを動かすことでユニットテストを実行する方法を


t=ostring)

    def create_help(self, key, entrytext, category="General", locks=None, aliases=None, tags=None):
        """
        Create a static help entry in the help database. Note that Command
        help entries are dynamic and directly taken from the __doc__
        entries of the command. The database-stored help entries are
        intended for more general help on the game, more extensive info,
        in-game setting information and so on.

        Args:
            key (str): The name of the help entry.
            entrytext (str): The body of te help entry
            category (str, optional): The help category of the entry.
            locks (str, optional): A lockstring to restrict access.
            aliases (list of str, optional): List of alternative (likely shorter) keynames.
            tags (lst, optional): List of tags or tuples `(tag, category)`.

        Returns:
            help (HelpEntry): A newly created help entry.

        """
        try:
            new_help = self.model()
            new_help.key = key
            new_help.entrytext = entrytext
            new_help.help_category = category
            if locks:
                new_help.locks.add(locks)
            if aliases:
                new_help.aliases.add(make_iter(aliases))
            if tags:
                new_help.tags.batch_add(*tags)
            new_help.save()
            return new_help
        except IntegrityError:
            string = "Could not add help entry: key '%s' already exists." % key
            logger.log_err(string)
            return None
        except Exception:
            logger.log_trace()
            return None

        signals.SIGNAL_HELPENTRY_POST_CREATE.send(sender=new_help)


_2: permittivity of medium 2.

    Returns:
        : angle in radians
    """
    return np.arctan(np.sqrt(eps_2 / eps_1).real)

def fresnel_reflection_matrix(eps_1, eps_2, mu1, npol):
    """
    Computes the fresnel power reflection matrix for/in medium 1 laying above medium 2.

    Args:
        eps_1: permittivity of medium 1.
        eps_2: permittivity of medium 2.
        mu1: cosine zenith angle in medium 1.
        npol: number of polarizations to return.

    Returns:
        : a matrix or the diagional depending on `return_as_diagonal`
    """

    mu1 = np.atleast_1d(mu1)
    assert len(mu1.shape) == 1  # 1D array

    reflection_coefficients = smrt_matrix.ones((npol, len(mu1)))

    rv, rh, _ = fresnel_coefficients(eps_1, eps_2, mu1)

    reflection_coefficients[0] = abs2(rv)
    reflection_coefficients[1] = abs2(rh)

    if npol >= 3:
        reflection_coefficients[2] = (rv * np.conj(rh)).real  # TsangI  Eq 7.2.93
        # It is not sure this equation is valid for strongly loosly materails

    return reflection_coefficients

def fresnel_transmission_matrix(eps_1, eps_2, mu1, npol):
    """
    Computes the fresnel power transmission matrix for/in medium 1 lying above medium 2.

    Args:
        eps_1: permittivity of medium 1.
        eps_2: permittivity of medium 2.
        mu1: cosine zenith angle in medium 1.
        npol: number of polarizations to return.

    Returns:
        : a matrix or the diagional depending on `return_as_diagonal`
    """

    mu1 = np.atleast_1d(mu1)
    assert len(mu1.shape) == 1  # 1D array

    transmission_coefficients = smrt_matrix.zeros((npol, len(mu1)))

    rv, rh, mu2 = fresnel_coefficients(eps_1, eps_2, mu1)

    transmission_coefficients[0] = 1 - abs2(rv)
    transmission_coefficients[1] = 1 - abs2(rh)
    if npol >= 3:
        transmission_coefficients[2] = mu2 / mu1 * ((1 + rv) * np.conj(1 + rh)).real  # TsangI  Eq 7.2.95
        # It is not sure this equation is valid for strongly loosly materails

    if npol == 4:
        raise Exception("to be implemented, the matrix is not diagonal anymore")

    return transmission_coefficients


id, d.external_data, d.node_list, d.is_prerouted "
                        + " from $(data) d where d.channel_id=? and data_id >= ? ");
        putSql("orderByDataId", " order by d.data_id asc ");
        putSql("orderByCreateTime", " order by d.create_time asc, d.data_id asc ");
        putSql("selectDistinctDataIdFromDataEventUsingGapsSql",
                "select distinct data_id from $(data_event) where data_id >=? and data_id <= ? order by data_id asc ");
        putSql("selectUnroutedCountForChannelSql", "select count(*) from $(data) where channel_id=? and data_id >=? ");
        putSql("selectLastDataIdRoutedUsingDataGapSql", "select max(start_id) from $(data_gap) ");
        putSql("selectOracleNextValueSql", "select nextvalue from gv$_sequences where sequence_name = ?");
    }
}/**
 * Licensed to JumpMind Inc under one or more contributor
 * license agreements.  See the NOTICE file distributed
 * with this work for additional information regarding
 * copyright ownership.  JumpMind Inc licenses this file
 * to you under the GNU General Public License, version 3.0 (GPLv3)
 * (the "License"); you may not use this file except in compliance
 * with the License.
 *
 * You should have received a copy of the GNU General Public License,
 * version 3.0 (GPLv3) along with this library; if not, see
 * <http://www.gnu.org/licenses/>.
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
package org.jumpmind.symmetric.service.impl;

import java.util.Map;

import org.jumpmind.db.platform.IDatabasePlatform;

public class OutgoingBatchServiceSqlMap extends AbstractSqlMap {
    public OutgoingBatchServiceSqlMap(IDatabasePlatform platform,
            Map<String, String> replacementTokens) {
        super(platform, replacementTokens);
        putSql("selectNodesInErrorSql", "select distinct node_id from $(outgoing_batch) where error_flag=1");
        putSql("initialLoadStatusSql",
                "select status from $(outgoing_batch) where node_id=? and load_flag=?   ");
        putSql("unsentBatchesForNodeIdChannelIdSql",
                "select count(*) from $(outgoing_batch) where node_id=? and channel_id=? and status != 'OK'   ");
        putSql("selectCountBatchesPrefixSql", "select count(*) from $(outgoing_batch)   ");
        putSql("cancelLoadBatchesSql",
                "update $(outgoing_batch) set ignore_count=1, status=case when sent_count > 0 then 'IG' else 'OK' end, " +
                        "error_flag=0, last_update_time=? where load_id=? and status not in ('OK','IG')");
        putSql("insertOutgoingBatchSql",
                "insert into $(outgoing_batch)                                                                                "
                        + "  (batch_id, node_id, channel_id, status, load_id, extract_job_flag, load_flag, common_flag, reload_row_count, other_row_count, "
                        + "  data_update_row_count, data_insert_row_count, data_delete_row_count, last_update_hostname, last_update_time, create_time, create_by, summary, data_row_count)   "
                        + "  values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)                                                                         ");
        putSql("updateOutgoingBatchSql",


           self.render_cell(*cell.1, cell.0, row.0);
            }
        }
    }
    fn get_events(&mut self) -> Vec<events::Event>
    {
        let mut events : Vec<events::Event> = Vec::new();
        for event in self.event_pump.poll_iter() {
            match event {
                Event::Quit { .. }
                | Event::KeyDown {
                    keycode: Some(Keycode::Escape),
                    ..
                } => events.push(events::Event::QUIT),
                Event::KeyDown {
                    keycode: Some(Keycode::P),
                    ..
                } => events.push(events::Event::PAUSE),
                _ => {}
            }
        }
        events
    }
    fn begin_render(&mut self) -> bool {
        self.canvas.set_draw_color(BLACK);
        self.canvas.clear();
        false
    }
    fn end_render(&mut self) {
        self.canvas.present();
    }
}
use termion::event::Key;
use termion::input::TermRead;
use termion::raw::{IntoRawMode, RawTerminal};
use termion::screen::AlternateScreen;
use tui::backend::TermionBackend;
use tui::layout::{Constraint, Direction, Layout};
use tui::style::{Color, Style};
use tui::widgets::{Block, Borders, List, Paragraph, SelectableList, Text, Widget};

use crate::context::Context;

use super::Commands;

type Terminal = tui::Terminal<TermionBackend<AlternateScreen<RawTerminal<std::io::Stdout>>>>;
type InterfaceResult = std::result::Result<(), Box<dyn std::error::Error>>;

#[derive(Debug, Default)]
struct Interface {
	history: Vec<String>,
	captures: Vec<String>,
	command: String,
	selected: usize,
	scroll: u16,
}

pub fn interface(context: &Context) -> InterfaceResult {
	let commands = Commands::new();
	let mut interface = Interface::default();
	interface.history.push("<initialise>".to_owned());

	let errors = std::mem::replace(context.errors.write().as_mut(), Vec::new());
	interface.captures.push(match errors.is_empty() {
		true => format!("{:#?}", context),
		false => errors.into_iter().map(|diagnostic|
			crate::error::string(context, &diagnostic)).collect()
	});

	let output = std::io::stdout().into_raw_mode()?;
	let backend = TermionBackend::new(AlternateScreen::from(output));
	let mut terminal = Terminal::new(backend)?;
	let mut input = std::io::stdin().keys();
	loop {
		render(&mut terminal, context, &interface, &commands)?;
		terminal.set_cursor(1 + interface.command.len() as u16, 1)?;

		let key = input.next();
		if let Some(key) = key.transpose()? {
			match key {
				Key::Ctrl('c') => return Ok(()),
				Key::Ctrl('u') => interface.command.clear(),
				Key::Char('\n') => {
					let command = std::mem::replace(&mut interface.command, String::new());
					let capture = commands.execute(context, &command)
						.replace('\t', &" ".repeat(4));

					interface.history.push(command);
					interface.captures.push(capture);
					interface.selected = interface.history.len() - 1;
					interface.scroll = 0;
				}
				Key::Char(character) => interface.command.push(character),
				Key::Backspace => { interface.command.pop(); }
				Key::Down => interface.scroll += 1,
				Key::Up if interface.scroll > 0 => interface.scroll -= 1,
				Key::Ctrl('n') if interface.selected + 1 < interface.history.len()


 drawn_img,
                win_name=name,
                wait_time=wait_time,
                vis_task=vis_task)

        if out_file is not None:
            # check the suffix of the name of image file
            if not (out_file.endswith('.png') or out_file.endswith('.jpg')):
                out_file = f'{out_file}.png'
            if drawn_img_3d is not None:
                mmcv.imwrite(drawn_img_3d[..., ::-1], out_file)
            if drawn_img is not None:
                mmcv.imwrite(drawn_img[..., ::-1],
                             out_file[:-4] + '_2d' + out_file[-4:])
        else:
            self.add_image(name, drawn_img_3d, step)


  	for(int i=0; i<10; i++) mem+=runtime.totalMemory();
  	mem/=10;
  	return mem;
  }

  public static long memoryFree() {
  	long mem=0;

  	for(int i=0; i<10; i++) mem+=runtime.freeMemory();
  	mem/=10;
  	return mem;
  }

  public static long memoryUsed() {
  	long mem=0;

  	for(int i=0; i<10; i++) mem+=memoryTotal()-memoryFree();
  	mem/=10;
  	return mem;
  }

  public static String memoryStats() {
  	float MB=1024f*1024f;
  	String s="Mem: "+nf((float)memoryFree()/MB,0,1)+" free "+
  		"| "+nf((float)memoryTotal()/MB,0,1)+" total | "+
  		nf((float)memoryMax()/MB,0,1)+" max.";
  	return s;
  }

  public static void runtimeGarbageCollector() {
  	long mem=memoryUsed();
  	runtime.runFinalization();
  	runtime.gc();
  	float diff=(float)(memoryUsed()-mem)/(1024f*1024f);
//  	Util.log("\nForcing Java garbage collection... "+
//  			nf(diff,0,1)+" MB difference.");
  }

  public static String[] runtimeExec(String cmd,boolean wait) {
  	String s[]=null;
  	int n;

	  try  {
	    Process p=Runtime.getRuntime().exec(cmd);
	    if(wait) p.waitFor();

	    BufferedReader reader=
	    	new BufferedReader(new InputStreamReader(p.getInputStream()));

	    s=new String[200];
	    n=0;

	    String line=reader.readLine();
	    while(line!=null) {
	    	if(n==s.length) {
	    		String [] tmp=new String[n*2];
	    		System.arraycopy(s, 0, tmp, 0, n);
	    		s=tmp;
	    	}
	    	s[n++]=line;
	      line=reader.readLine();
	    }

	    s=stripNullStrings(s);
	  }
	  catch(Exception e1) {
	    logErrPrint("execCommand() failed: "+e1.toString());
	    s=null;
	  }
  	return s;
  }

  public static PImage imgResize(PImage img,float w,float h) {
  	float sz=1;

  	if(w<0) {
  		sz=h/(float)img.height;
  	}
  	else if(h<0) {
  		sz=w/(float)img.width;
  	}

  	return imgResize(img, (int)((float)img.width*sz));
  }

  public static PImage imgResize(PImage img,float w) {
  	BufferedImage tmp=(BufferedImage )img.getImage();
  	float mod=w/(float)tmp.getWidth();
//  	log("mod "+mod+" dim "+tmp.getWidth()+" "+tmp.getHeight());

  	PImage tmp2=new PImage(tmp.getScaledInstance(
  			(int)w, (int)Math.round((float)tmp.getHeight()*mod),
  			java.awt.Image.SCALE_SMOOTH));

//  	log("mod "+mod+" dim "+tmp2.width+" "+tmp2.height);

  	return tmp2;
  }

  /**
	 * Returns a String representation of object "o", containing the values
	 * of all its fields.
	 */

	public static String listObjectFields(Object o) {
		Object otmp;
		Class ctmp;

		try {
			Class cl=o.getClass();
			Field[] f=cl.getFields();

			final StringBuffer buf=new StringBuffer(500);
			Object value=null;
			buf.append(cl.getSimpleName());
			buf.append('@');
			buf.append(o.hashCode());
			buf.append(" = {");

			for (int idx=0; idx<f.length; idx++) {

				if (idx!=0)
					buf.append(COMMASTR);

				buf.


not reserving space for images, text shifts when web fonts are loaded, top banners inserted after first paint, non-composited animations, and iframes.

### First Input Delay (FID)

First Input Delay (FID) measures the time from when a user first interacts with a page to the time the browser begins processing event handlers in response to that interaction.

{{ figure_markup(
  image="performance-FID-by-device.png",
  caption="FID performance by device.",
  description="Stacked bar chart showing FID performance for desktop and mobile devices. For desktop devices, 100% of websites had good (< 100ms). For mobile, 90% were good, 10% needs improvement, and 0% poor (>= 300ms).",
  chart_url="https://docs.google.com/spreadsheets/d/e/2PACX-1vQj6-t49BNV_5W-w83AABkUoo6klfyUyIz13yKShLAzK8qGs5lJ9TKcggIEp6JgxikVF-UJBAHpsrNl/pubchart?oid=230841623&format=interactive",
  sheets_gid="2140629699",
  sql_file="web_vitals_by_device.sql"
  )
}}

FID performance was better on desktop than on mobile devices likely due to device speeds which can better handle larger amounts of JavaScript.

{{ figure_markup(
  image="performance-FID-by-ect.png",
  caption="FID performance by connection type.",
  description="Stacked bar chart showing FID performance for effective connection type. For offline websites, 78% had good, 17% needs improvement, and 5% poor performance. For slow 2G and 2G, 81-82% were good, 18% needs improvement, and 0-1% poor. For 3G, 90% were good and 10% needs improvement. For 4G, 93% were good, 7% needs improvement, and 0% poor.",
  chart_url="https://docs.google.com/spreadsheets/d/e/2PACX-1vQj6-t49BNV_5W-w83AABkUoo6klfyUyIz13yKShLAzK8qGs5lJ9TKcggIEp6JgxikVF-UJBAHpsrNl/pubchart?oid=1135701788&format=interactive",
  sheets_gid="1361919728",
  sql_file="web_vitals_by_eff_connection_type.sql"
  )
}}

FID performance degraded some by connection type, but less so than the other metrics. The high distribution of scores seemed to reduce the amount of variance in the results.

Unlike the other metrics, FID was worse for offline websites than any other connection category. This could be due to the more complex nature of many websites with service workers. Having a service worker does not eliminate the impact of client-side JavaScript running on the main thread.

{{ figure_markup(
  image="performance-FID-by-rank.png",
  caption="FID performance by rank.",
  description="Stacked bar chart showing FID performance for each ranking group. For all categories, 93-94% had good, 5-7% needs improvement, and 0% poor performance.",
  chart_url="https://docs.google.com/spreadsheets/d/e/2PACX-1vQj6-t49BNV_5W-w83AABkUoo6klfyUyIz13yKShLAzK8qGs5lJ9TKcggIEp6JgxikVF-UJBAHpsrNl/pubchart?oid=1539782601&format=interactive",
  sheets_gid="1988323604",
  sql_file="web_vitals_by_rank.sql"
  )
}}

FID performance by rank was flat.

For all FID metrics, we see very large bars in the "good" category which makes it less effective unless we've truly hit peak performance. The good news is the Chrome team is evaluating this now and would like your feedback.

If your site's performance is not in the "good" category, then you definitely have a performance problem. A common culprit for FID issues is too much long-running JavaScript. Keep your bundle si


xprType::Bool(code_ref) => *code_ref = new_code_ref,
            ExprType::F32(code_ref) => *code_ref = new_code_ref,
            ExprType::I64(code_ref) => *code_ref = new_code_ref,
            ExprType::U8(code_ref) => *code_ref = new_code_ref,
            ExprType::Address(code_ref) => *code_ref = new_code_ref,
            ExprType::Tuple(code_ref, ..) => *code_ref = new_code_ref,
            ExprType::Struct(code_ref, ..) => *code_ref = new_code_ref,
        }
    }

    pub fn width(
        &self,
        ptr_ty: types::Type,
        struct_map: &HashMap<String, StructDef>,
    ) -> Option<usize> {
        match self {
            ExprType::Array(_, ty, size_type) => match size_type {
                ArraySizedExpr::Unsized => Some(ptr_ty.bytes() as usize),
                ArraySizedExpr::Slice => Some((ptr_ty.bytes() + 2 * 8) as usize),
                ArraySizedExpr::Fixed(len) => ty.width(ptr_ty, struct_map).map(|width| width * len),
            },
            ExprType::Void(_) => Some(0),
            ExprType::Bool(_) => Some(types::I8.bytes() as usize),
            ExprType::F32(_) => Some(types::F32.bytes() as usize),
            ExprType::I64(_) => Some(types::I64.bytes() as usize),
            ExprType::U8(_) => Some(types::I8.bytes() as usize),
            ExprType::Address(_) => Some(ptr_ty.bytes() as usize),
            ExprType::Tuple(_code_ref, _expr_types) => None,
            ExprType::Struct(_code_ref, name) => Some(struct_map[&name.to_string()].size),
        }
    }

    pub fn of(
        of_expr: &Expr,
        env: &Env,
        func_name: &str,
        variables: &HashMap<String, SVariable>,
    ) -> Result<ExprType, TypeError> {
        trace!("of {}", of_expr);
        let res = match of_expr {
            Expr::Identifier {
                code_ref,
                name: id_name,
            } => {
                if id_name.contains("::") {
                    let parts = id_name.split("::").collect::<Vec<_>>();
                    if let Some(struct_) = env.struct_map.get(parts[0]) {
                        if struct_.enum_struct {
                            if let Some(_field) = struct_.fields.get(parts[1]) {
                                return Ok(ExprType::I64(*code_ref));
                            } else {
                                panic!("field {} not found", parts[1]) //TODO make an error for this
                            }
                        }
                    }
                }
                if variables.contains_key(id_name) {
                    variables[id_name].expr_type(code_ref).unwrap()
                } else if let Some(v) = env.constant_vars.get(id_name) {
                    v.expr_type(Some(*code_ref)) //Constants like PI, TAU...
                } else if let Some(_closure) = env.get_inline_closure(func_name, id_name) {
                    ExprType::Void(*code_ref)
                } else {
                    error!("{:#?}", variables);
                    return Err(TypeError::UnknownVariable(
                        code_ref.s(&env.file_idx),
                        id_name.to_string(),
                    ));
                }
            }
            Expr::LiteralFloat { code_ref, .. } => ExprType::F32(*code_ref),
            Expr::LiteralInt { code_ref, .. } => ExprType::I64(*code_ref),
            Expr::LiteralU8 { code_ref, .. } => ExprType::U8(*code_ref),
            Expr::LiteralBool { code_ref, .. } => ExprType::Bool(*code


tChecked(p.getBoolean(LogsAppWidgetProvider.WIDGET_COST
                + mAppWidgetId, false));
        cbShowIcon.setChecked(p.getBoolean(LogsAppWidgetProvider.WIDGET_ICON
                + mAppWidgetId, false));
        cbSmallWidget.setChecked(p.getBoolean(LogsAppWidgetProvider.WIDGET_SMALL
                + mAppWidgetId, false));
        float f = p.getFloat(LogsAppWidgetProvider.WIDGET_STATS_TEXTSIZE + mAppWidgetId, -1);
        if (f > 0f && f != DEFAULT_TEXTSIZE) {
            etStatsTextSize.setText(String.valueOf(f));
        } else {
            etStatsTextSize.setText(null);
        }
        f = p.getFloat(LogsAppWidgetProvider.WIDGET_PLAN_TEXTSIZE + mAppWidgetId, -1);
        if (f > 0f && f != DEFAULT_TEXTSIZE) {
            etPlanTextSize.setText(String.valueOf(f));
        } else {
            etPlanTextSize.setText(null);
        }
        setTextColor(p.getInt(LogsAppWidgetProvider.WIDGET_TEXTCOLOR + mAppWidgetId,
                DEFAULT_TEXTCOLOR));
        setBgColor(
                p.getInt(LogsAppWidgetProvider.WIDGET_BGCOLOR + mAppWidgetId, DEFAULT_BGCOLOR),
                false);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public boolean onCreateOptionsMenu(final Menu menu) {
        if (isExistingWidget) {
            getMenuInflater().inflate(R.menu.menu_widget, menu);
            return true;
        } else {
            return super.onCreateOptionsMenu(menu);
        }
    }

    @Override
    public boolean onOptionsItemSelected(final MenuItem item) {
        switch (item.getItemId()) {
            case R.id.item_del:
                PreferenceManager.getDefaultSharedPreferences(this).edit()
                        .remove(LogsAppWidgetProvider.WIDGET_PLANID + mAppWidgetId).commit();
                finish();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

    /**
     * Get background color currently set.
     *
     * @return color
     */
    private int getBgColor() {
        return Long.decode(btnBgColor.getText().toString()).intValue();
    }

    /**
     * Set the background color to btnBgColor and vBgColorField.
     *
     * @param color           color to set
     * @param fromProgressBar true, if setColor is called from onProgessChanged()
     */
    private void setBgColor(final int color, final boolean fromProgressBar) {
        Log.d(TAG, "setBgColor(", color, ", ", fromProgressBar, ")");
        String hex = AmbilWarnaDialog.colorToString(color);
        btnBgColor.setText(hex);
        vBgColor.setBackgroundColor(color);
        if (!fromProgressBar) {
            int trans = color >> BITSHIFT_TRANSPARENCY;
            Log.d(TAG, "transparency: ", trans);
            if (trans < 0) {
                trans = 256 + trans;
                Log.d(TAG, "transparency: ", trans);
            }
            sbBgTransparency.setProgress(255 - trans);
        }
    }

    /**
     * Get text color currently set.
     *
     * @return color
     */
    private int getTextColor() {
        return Long.decode(btnTextColor.getText().toString()).intValue();
    }

    /**
     * Set the text color to btnTextColor and vTextColorField.
     *
     * @param color color to set
     */
    private void setTextColor(final int color) {
        Log.d(TAG, "setTextColor(", color, ")");
        String hex = AmbilWarnaDialog.colorToString(color);
        Log.d(TAG, "color: ", hex);
        while (hex.length() < 9) {
            hex = "#0" + hex.substring(1);
            Log.d(TAG, "color: ", hex);
        }
        btnTextColor.setText(hex);
        vTextColor.setBackgroundColor(color);
    }


ound-color: white">CB`)
		assert.strictEqual(ansi.ansiToHTML("\u001b[107mC\u001b[107mB"), `<span style="background-color: white">CB</span>`)

		assert.strictEqual(ansi.ansiToHTML("\u001b[38;5;196mhello"), `<span style="color: #ff0000">hello</span>`)
		assert.strictEqual(ansi.ansiToHTML("\u001b[38;5;234mhello"), `<span style="color: #1c1c1c">hello</span>`)
		assert.strictEqual(ansi.ansiToHTML("\u001b[38;5;250mhello"), `<span style="color: #bcbcbc">hello</span>`)
		assert.strictEqual(ansi.ansiToHTML("\u001b[38;5;250;48;5;250mhello"), `<span style="color: #bcbcbc; background-color: #bcbcbc">hello</span>`)
		assert.strictEqual(ansi.ansiToHTML("\u001b[38;5;171;1mfoo"), `<span style="color: #d75fff; font-weight: bold">foo</span>`)
		assert.strictEqual(ansi.ansiToHTML("\u001b[38;5;16;1mfoo"), `<span style="color: #000000; font-weight: bold">foo</span>`)

		assert.strictEqual(ansi.ansiToHTML("\u001b[48;2;210;60;114mhello"), `<span style="background-color: #d23c72">hello</span>`)
		assert.strictEqual(ansi.ansiToHTML("\u001b[48;2;155;42;45mhello", {}), `<span style="background-color: #9b2a2d">hello</span>`)
		assert.strictEqual(ansi.ansiToHTML("\u001b[48;2;155;42;45mhello"), `<span style="background-color: #9b2a2d">hello</span>`)

		assert.strictEqual(ansi.ansiToHTML("\u001b[30mblack\u001b[39mdefault"), `<span style="color: black">black</span>default`)
		assert.strictEqual(ansi.ansiToHTML("\u001b[25oops forgot the 'm'"), `oops forgot the 'm'`)
	}

	export function getStringWidthTest() {
		assert.strictEqual(ansi.getStringWidth("xy"), 2)

		assert.strictEqual(ansi.getStringWidth(""), 0)
		assert.strictEqual(ansi.getStringWidth("中文"), 4)
		assert.strictEqual(ansi.getStringWidth("中y"), 3)

		assert.strictEqual(ansi.getStringWidth("abcde"), 5)
		assert.strictEqual(ansi.getStringWidth("古池や"), 6)
		assert.strictEqual(ansi.getStringWidth("あいうabc"), 9)
		assert.strictEqual(ansi.getStringWidth("ノード.js"), 9)
		assert.strictEqual(ansi.getStringWidth("你好"), 4)
		assert.strictEqual(ansi.getStringWidth("안녕하세요"), 10)
		assert.strictEqual(ansi.getStringWidth("A\uD83C\uDE00BC"), 5, "surrogate")
		assert.strictEqual(ansi.getStringWidth("\u001B[31m\u001B[39m"), 0)
		assert.strictEqual(ansi.getStringWidth("\u001B]8https://github.com\u0007Click\u001B]8\u0007"), 5)
		assert.strictEqual(ansi.getStringWidth("\u{231A}"), 2, "⌚ default emoji presentation character (Emoji_Presentation)")
		assert.strictEqual(ansi.getString


des cuissards de cuirassier si vous lui apportez les choses suivantes : 1 paire de Cuissars désacralisés, 20 Débris d’armure en plaques, 4 Barres d’arcanite et 3 Peaux robustes traitées."}},
[9037] = {"Casque de cuirassier", {"Durant vos batailles contre le Fléau à Naxxramas, si vous tombez sur des pièces d’armures désacralisées et des débris d’armures, ramenez-les-moi et je vous forgerai une pièce de cette armure de héros."}, {"Korfax, à la chapelle de l’Espoir de Lumière dans les Maleterres de l’Est, vous fabriquera un casque de cuirassier si vous lui apportez les choses suivantes : 1 Heaume désacralisé, 15 Débris d’armure en plaques, 5 Barres d’arcanite et 1 Cristal de nexus."}},
[9038] = {"Espauliers de cuirassier", {"Durant vos batailles contre le Fléau à Naxxramas, si vous tombez sur des pièces d’armures désacralisées et des débris d’armures, ramenez-les-moi et je vous forgerai une pièce de cette armure de héros."}, {"Korfax, à la chapelle de l’Espoir de Lumière dans les Maleterres de l’Est, vous fabriquera des espauliers de cuirassier si vous lui apportez les choses suivantes : 1 paire d'Espauliers désacralisés, 12 Débris d’armure en plaques, 2 Barres d’arcanite et 3 Peaux robustes traitées."}},
[9039] = {"Solerets de cuirassier", {"Durant vos batailles contre le Fléau à Naxxramas, si vous tombez sur des pièces d’armures désacralisées et des débris d’armures, ramenez-les-moi et je vous forgerai une pièce de cette armure de héros."}, {"Korfax, à la chapelle de l’Espoir de Lumière dans les Maleterres de l’Est, vous fabriquera des solerets de cuirassier si vous lui apportez les choses suivantes : 1 paire de Solerets désacralisés, 12 Débris d’armure en plaques, 2 Barres d’arcanite et 3 Peaux robustes traitées."}},
[9040] = {"Gantelets de cuirassier", {"Durant vos batailles contre le Fléau à Naxxramas, si vous tombez sur des pièces d’armures désacralisées et des débris d’armures, ramenez-les-moi et je vous forgerai une pièce de cette armure de héros."}, {"Korfax, à la chapelle de l’Espoir de Lumière dans les Maleterres de l’Est, vous fabriquera des gantelets de cuirassier si vous lui apportez les choses suivantes : 1 paire de Gantelets désacralisés, 8 Débris d’armure en plaques, 1 Barre d’arcanite et 5 Peaux robustes traitées."}},
[9041] = {"Sangle de cuirassier", {"Durant vos batailles contre le Fléau à Naxxramas, si vous tombez sur des pièces d’armures désacralisées et des débris d’armures, ramenez-les-moi et je vous forgerai une pièce de cette armure de héros."}, {"Korfax, à la chapelle de l’Espoir de Lumière dans les Maleterres de l’Est, vous fabriquera une sangle de cuirassier si vous lui apportez les choses suivantes : 1 Sangle désacralisée, 8 Débris d’armure en plaques, 1 Barre d’arcanite et 5 Peaux robustes traitées."}},
[9042] = {"Brassards de cuirassier", {"Durant vos batailles contre le Fléau à Naxxrama


end
				-- Check if pointing to a liquid
				n = minetest.get_node(pointed_thing.under)
				if bucket.liquids[n.name] == nil then
					-- Not a liquid
					minetest.add_node(pointed_thing.above, {name=source})
				elseif n.name ~= source then
					-- It's a liquid
					minetest.add_node(pointed_thing.under, {name=source})
				end
				return {name="bucket:bucket_empty"}
			end
		})
	end
end

minetest.register_craftitem("bucket:bucket_empty", {
	inventory_image = "bucket.png",
	stack_max = 1,
	liquids_pointable = true,
	on_use = function(itemstack, user, pointed_thing)
		-- Must be pointing to node
		if pointed_thing.type ~= "node" then
			return
		end
		-- Check if pointing to a liquid source
		n = minetest.get_node(pointed_thing.under)
		liquiddef = bucket.liquids[n.name]
		if liquiddef ~= nil and liquiddef.source == n.name and liquiddef.itemname ~= nil then
			minetest.add_node(pointed_thing.under, {name="air"})
			return {name=liquiddef.itemname}
		end
	end,
})

bucket.register_liquid(
	"default:water_source",
	"default:water_flowing",
	"bucket:bucket_water",
	"bucket_water.png"
)

bucket.register_liquid(
	"default:lava_source",
	"default:lava_flowing",
	"bucket:bucket_lava",
	"bucket_lava.png"
)

minetest.register_craft({
	type = "fuel",
	recipe = "bucket:bucket_lava",
	burntime = 60,
})


entů • Vzory volání funkcí • Komunikace mezi agenty • Orchestrace workflow • Mechanismy zajištění kvality

**Ukázka**: [Pokročilý systém více agentů](./samples/09/README.md)

**Délka**: 4-5 hodin | **Úroveň**: Expert

---

### [10: Foundry Local jako nástrojový rámec](./samples/10/README.md)
**Zaměření**: Architektura zaměřená na nástroje pro integraci Foundry Local do existujících aplikací a rámců

**Klíčová témata**: Integrace LangChain • Funkce Semantic Kernel • Rámce REST API • Nástroje CLI • Integrace Jupyter • Produkční vzory nasazení

**Ukázka**: [Foundry Tools Framework](./samples/10/README.md)

**Délka**: 4-5 hodin | **Úroveň**: Expert

## Požadavky

### Systémové požadavky
- **Operační systém**: Windows 11 (22H2 nebo novější)
- **Paměť**: 16GB RAM (doporučeno 32GB pro větší modely)
- **Úložiště**: 50GB volného místa pro ukládání modelů
- **Hardware**: Doporučeno zařízení s podporou NPU (Copilot+ PC), GPU volitelné
- **Síť**: Rychlé připojení k internetu pro počáteční stahování modelů

### Vývojové prostředí
- Visual Studio Code s rozšířením AI Toolkit
- Python 3.10+ a pip
- Git pro správu verzí
- PowerShell nebo Command Prompt
- Azure CLI (volitelné pro integraci s cloudem)

### Znalostní požadavky
- Základní porozumění konceptům AI/ML
- Znalost práce s příkazovým řádkem
- Základy programování v Pythonu
- Koncepty REST API
- Základní znalosti návrhu promptů a inference modelů

## Časový plán modulu

**Celkový odhadovaný čas**: 30-38 hodin

| Lekce | Oblast zaměření | Ukázky | Čas | Složitost |
|-------|-----------------|--------|------|-----------|
|  1 | Nastavení a základy | 01, 02, 03 | 2-3 hodiny | Začátečník |
|  2 | AI řešení | 04 | 2-3 hodiny | Středně pokročilý |
|  3 | Open Source | 05 | 2-3 hodiny | Středně pokročilý |
|  4 | Pokročilé modely | 06 | 3-4 hodiny | Pokročilý |
|  5 | AI agenti | 05, 09 | 3-4 hodiny | Pokročilý |
|  6 | Podnikové nástroje | 06, 10 | 3-4 hodiny | Expert |
|  7 | Přímá integrace API | 07 | 2-3 hodiny | Středně pokročilý |
|  8 | Chatovací aplikace pro Windows 11 | 08 | 3-4 hodiny | Pokročilý |
|  9 | Pokročilá orchestrace více agentů | 09 | 4-5 hodin | Expert |
| 10 | Nástrojový rámec | 10 | 4-5 hodin | Expert |

## Klíčové zdroje

**Oficiální dokumentace:**
- [Microsoft Foundry Local GitHub](https://github.com/microsoft/Foundry-Local) - Zdrojový kód a ofici


owTag(bool value) => _showTag = _r.checkAndReact(_showTag, value);
  set profileVM(bool value) => _profileVM = _r.checkAndReact(_profileVM, value);

  factory SampleBufferControlElement(
    M.VM vm,
    M.SampleProfileLoadingProgress progress,
    Stream<M.SampleProfileLoadingProgressEvent> progressStream, {
    M.SampleProfileTag selectedTag = M.SampleProfileTag.none,
    bool showTag = true,
    RenderingQueue? queue,
  }) {
    SampleBufferControlElement e = new SampleBufferControlElement.created();
    e._r = new RenderingScheduler<SampleBufferControlElement>(e, queue: queue);
    e._vm = vm;
    e._progress = progress;
    e._progressStream = progressStream;
    e._tag = selectedTag;
    e._showTag = showTag;
    return e;
  }

  SampleBufferControlElement.created() : super.created('sample-buffer-control');

  @override
  void attached() {
    super.attached();
    _r.enable();
    _subscription = _progressStream.listen((e) {
      _progress = e.progress;
      _r.dirty();
    });
  }

  @override
  void detached() {
    super.detached();
    _r.disable(notify: true);
    children = const [];
    _subscription.cancel();
  }

  void render() {
    var content = <HTMLElement>[
      new HTMLHeadingElement.h2()..textContent = 'Sample buffer',
      new HTMLHRElement(),
    ];
    switch (_progress.status) {
      case M.SampleProfileLoadingStatus.fetching:
        content.addAll(_createStatusMessage('Fetching profile from VM...'));
        break;
      case M.SampleProfileLoadingStatus.loading:
        content.addAll(
          _createStatusMessage(
            'Loading profile...',
            progress: _progress.progress,
          ),
        );
        break;
      case M.SampleProfileLoadingStatus.disabled:
        content.addAll(_createDisabledMessage());
        break;
      case M.SampleProfileLoadingStatus.loaded:
        content.addAll(_createStatusReport());
        break;
    }
    children = <HTMLElement>[
      new HTMLDivElement()
        ..className = 'content-centered-big'
        ..appendChildren(content),
    ];
  }

  static List<HTMLElement> _createStatusMessage(
    String message, {
    double progress = 0.0,
  }) {
    return [
      new HTMLDivElement()
        ..className = 'statusBox shadow center'
        ..appendChildren(<HTMLElement>[
          new HTMLDivElement()
            ..className = 'statusMessage'
            ..textContent = message,
          new HTMLDivElement()
            ..style.background = '#0489c3'
            ..style.width = '$progress%'
            ..style.height = '15px'
            ..style.borderRadius = '4px',
        ]),
    ];
  }

  List<HTMLElement> _createDisabledMessage() {
    return [
      new HTMLDivElement()
        ..className =
            'statusBox'
            'shadow'
            'center'
        ..appendChildren(<HTMLElement>[
          new HTMLDivElement()..appendChildren(<HTMLElement>[
            new HTMLHeadingElement.h1()..textContent = 'Profiling is disabled',
            new HTMLBRElement(),
            new HTMLDivElement()
              ..innerHTML =
                  'Perhaps the <b>profile</b> '
                          'flag has been disabled for this VM.'
                      .toJS,
            new HTMLBRElement(),
            new HTMLButtonElement()
              ..textContent = 'Enable profiler'
              ..onClick.listen((_) {
                _enableProfiler();
              }),
          ]),
        ]),
    ];
  }

  List<HTMLElement> _create


                              */
/*  05-19-2020     William E. Lamie         Initial Version 6.0           */
/*  09-30-2020     William E. Lamie         Modified comment(s),          */
/*                                            resulting in version 6.1    */
/*                                                                        */
/**************************************************************************/
UINT  _fxe_directory_attributes_set(FX_MEDIA *media_ptr, CHAR *directory_name, UINT attributes)
{

UINT status;

    /* Check for a null media pointer.  */
    if (media_ptr == FX_NULL)
    {
        return(FX_PTR_ERROR);
    }

    /* Check for invalid attributes.  */
    if ((INT)attributes & ~(FX_DIRECTORY | FX_READ_ONLY | FX_HIDDEN | FX_SYSTEM | FX_ARCHIVE))
    {
        return(FX_INVALID_ATTR);
    }

    /* Check for a valid caller.  */
    FX_CALLER_CHECKING_CODE

    /* Call actual set attributes service.  */
    status =  _fx_directory_attributes_set(media_ptr, directory_name, attributes);

    /* File attribute set is complete, return status.  */
    return(status);
}


// This function copies an inline handler for the B2 command (function call)
// to an unused area of memory, and inserts it into the game's command handler
// table, thus making the B2 command fully functional as it is on most other
// versions of the game.

// We could do the code copy and callsite modification directly in the quest
// script, but that would restrict us to only using addresses that end in 00.
// Furthermore, doing it this way provides an example of how to embed native
// code in a quest script and run it from within the script.

start:
  mflr    r11
  bl      get_handle_B2_ptr

handle_B2:
  # Arguments:
  # r3 = TProtocol* proto (we use this to call the send function)
  # r4 = void* data
  # Returns: void

  mflr    r0
  stwu    [r1 - 0x40], r1
  stw     [r1 + 0x44], r0

  # Stack:
  # [r1+08] = B3 XX 0C 00
  # [r1+0C] = code section's return value
  # [r1+10] = checksum
  # [r1+14] = saved ctx argument
  # [r1+18] = saved data argument
  stw     [r1 + 0x14], r3
  stw     [r1 + 0x18], r4

  # Set up the reply header (B3 XX 0C 00, where XX comes from the B2 command)
  lbz     r5, [r4 + 1]
  rlwinm  r5, r5, 16, 8, 15
  oris    r5, r5, 0xB300
  ori     r5, r5, 0x0C00
  stw     [r1 + 0x08], r5

  # If there's no code section, skip it. We also write the code section size to
  # the return value field (which will be overwritten later if the size is not
  # zero). This is because I'm lazy and this gives the behavior we want: the
  # code return value is always zero if the code section size is zero.
  li      r6, 4
  lwbrx   r5, [r4 + r6] # r5 = code_size
  stw     [r1 + 0x0C], r5 # response.code_return_value = code_size
  cmplwi  r5, 0
  beq     handle_B2_skip_code

  # Get the code section base and footer addresses
  addi    r6, r4, 0x10 # r6 = code base address
  add     r7, r6, r5
  subi    r7, r7, 0x20 # r7 = footer address (code base + code size - 0x20)

  # Check if there are relocations to do
  lwz     r8, [r7 + 4] # r8 = num relocations
  cmplwi  r8, 0
  beq     handle_B2_skip_relocations

  # Execute the relocations
  mtctr   r8
  lwz     r8, [r7] # r8 = relocations list offset
  add     r8, r8, r6 # r8 = relocations list address
  subi    r8, r8, 2 # Back up one space so we can use lhzu in the loop
  mr      r10, r6 # relocation pointer = code base address
handle_B2_relocate_again:
  lhzu    r9, [r8 + 2]
  rlwinm  r9, r9, 2, 0, 29 # r9 = next_r


dent, $program:expr, $input:expr, $expected_error:pat) => {
      #[test]
      fn $name() {
        let mut input: &[u8] = &$input;
        let mut output = FakeIo;
        let actual_error =
          test_run(&$program, &mut input, &mut output).unwrap_err();
        assert!(match actual_error {
          $expected_error => true,
          _ => false,
        })
      }
    };
  }

  macro_rules! test_io_error {
    ($name:ident, $program:expr, $expected_error:pat) => {
      #[test]
      fn $name() {
        let actual_error =
          test_run(&$program, &mut FakeIo, &mut FakeIo).unwrap_err();
        assert!(match actual_error {
          $expected_error => true,
          _ => false,
        })
      }
    };
  }

  test!(test_print, [Print, Print, Print], [], [0, 0, 0]);

  test!(
    test_add,
    [Print, Add(5), Print, Add(-3), Print],
    [],
    [0, 5, 2]
  );

  test!(
    test_add_overflow,
    [
      Print,
      Add(0),
      Print,
      Add(-1),
      Print,
      Add(1),
      Print,
      Add(256),
      Print,
      Add(-256),
      Print,
      Add(257),
      Print,
      Add(257),
      Print,
      Add(123_456_789),
      Print,
      Add(789_456_321),
      Print,
    ],
    [],
    [0, 0, 255, 0, 0, 0, 1, 2, 23, 216]
  );

  test!(
    test_move,
    [
      Print,
      Move(1),
      Print,
      Move(1),
      Print,
      Move(-2),
      Add(1),
      Move(1),
      Add(2),
      Move(1),
      Add(3),
      Move(-2),
      Print,
      Move(1),
      Print,
      Move(1),
      Print,
    ],
    [],
    [0, 0, 0, 1, 2, 3]
  );

  test_error!(
    test_move_underflow_from_left,
    [Move(-1)],
    [],
    Error::PointerUnderflow
  );
  test_error!(
    test_move_underflow,
    [Move(1), Move(-2)],
    [],
    Error::PointerUnderflow
  );
  test_error!(
    test_move_underflow_from_right,
    [
      Move(MEMORY_SIZE as isize - 1),
      Move(-(MEMORY_SIZE as isize) - 1)
    ],
    [],
    Error::PointerUnderflow
  );

  test_error!(
    test_move_overflow_from_left,
    [Move(MEMORY_SIZE as isize + 1)],
    [],
    Error::PointerOverflow
  );
  test_error!(
    test_move_overflow,
    [Move(MEMORY_SIZE as isize - 2), Move(2)],
    [],
    Error::PointerOverflow
  );
  test_error!(
    test_move_overflow_from_right,
    [Move(MEMORY_SIZE as isize - 1), Move(1)],
    [],
    Error::PointerOverflow
  );

  test!(
    test_read,
    [Print, Add(3), Print, Read, Print],
    [42],
    [0, 3, 42]
  );

  test!(
    test_read_eof,
    [Print, Add(3), Print, Read, Print, Read, Print],
    [42],
    [0, 3, 42, 0]
  );

  test!(
    test_simple_loops,
    [
      Add(3),
      JumpIfZero(7),
      Add(-1),
      Move(1),
      Read,
      Print,
      Move(-1),
      JumpIfNonZero(1)
    ],
    [


_CHOOSE_HELPER(count) \
     MOZ_BEGIN_NESTED_ENUM_CLASS_CHOOSE_HELPER1(count)
   /* The actual macro. */
#  define MOZ_BEGIN_NESTED_ENUM_CLASS_GLUE(x, y) x y
#  define MOZ_BEGIN_NESTED_ENUM_CLASS(...) \
     MOZ_BEGIN_NESTED_ENUM_CLASS_GLUE(MOZ_BEGIN_NESTED_ENUM_CLASS_CHOOSE_HELPER(MOZ_COUNT_BEGIN_ENUM_CLASS_ARGS(__VA_ARGS__)), \
                                      (__VA_ARGS__))

#  define MOZ_BEGIN_ENUM_CLASS(...) MOZ_BEGIN_NESTED_ENUM_CLASS(__VA_ARGS__)
#  define MOZ_END_ENUM_CLASS(Name) \
     MOZ_END_NESTED_ENUM_CLASS(Name) \
     MOZ_FINISH_NESTED_ENUM_CLASS(Name)

#endif /* __cplusplus */

#endif /* mozilla_TypedEnum_h */


.ui.indicating.progress[data-percent="2"] .label,
.ui.indicating.progress[data-percent="3"] .label,
.ui.indicating.progress[data-percent="4"] .label,
.ui.indicating.progress[data-percent="5"] .label,
.ui.indicating.progress[data-percent="6"] .label,
.ui.indicating.progress[data-percent="7"] .label,
.ui.indicating.progress[data-percent="8"] .label,
.ui.indicating.progress[data-percent="9"] .label {
  color: rgba(0, 0, 0, 0.87);
}
.ui.inverted.indicating.progress[data-percent="0"] .label,
.ui.inverted.indicating.progress[data-percent="1"] .label,
.ui.inverted.indicating.progress[data-percent="2"] .label,
.ui.inverted.indicating.progress[data-percent="3"] .label,
.ui.inverted.indicating.progress[data-percent="4"] .label,
.ui.inverted.indicating.progress[data-percent="5"] .label,
.ui.inverted.indicating.progress[data-percent="6"] .label,
.ui.inverted.indicating.progress[data-percent="7"] .label,
.ui.inverted.indicating.progress[data-percent="8"] .label,
.ui.inverted.indicating.progress[data-percent="9"] .label {
  color: rgba(255, 255, 255, 0.9);
}

/* Indicating Success */
.ui.ui.indicating.progress.success .label {
  color: #1A531B;
}

/* Multiple */
.ui.multiple.progress {
  display: flex;
}

/*******************************
             States
*******************************/

/*--------------
     Success
---------------*/

.ui.ui.progress.success .bar {
  background-color: #21BA45;
}
.ui.ui.progress.success .bar,
.ui.ui.progress.success .bar::after {
  -webkit-animation: none;
          animation: none;
}
.ui.progress.success > .label {
  color: #1A531B;
}

/*--------------
     Warning
---------------*/

.ui.ui.progress.warning .bar {
  background-color: #F2C037;
}
.ui.ui.progress.warning .bar,
.ui.ui.progress.warning .bar::after {
  -webkit-animation: none;
          animation: none;
}
.ui.progress.warning > .label {
  color: #794B02;
}

/*--------------
     Error
---------------*/

.ui.ui.progress.error .bar {
  background-color: #DB2828;
}
.ui.ui.progress.error .bar,
.ui.ui.progress.error .bar::after {
  -webkit-animation: none;
          animation: none;
}
.ui.progress.error > .label {
  color: #912D2B;
}

/*--------------
     Active
---------------*/

.ui.active.progress .bar {
  position: relative;
  min-width: 2em;
}
.ui.active.progress .bar::after {
  content: '';
  opacity: 0;
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: #FFFFFF;
  border-radius: 0.28571429rem;
  -webkit-animation: progress-active 2s ease infinite;
          animation: progress-active 2s ease infinite;
  -webkit-transform-origin: left;
          transform-origin: left;
}
@-webkit-keyframes progress-active {
  0% {
    opacity: 0.3;
    -webkit-transform: scale(0, 1);
            transform: scale(0, 1);
  }
  100% {


">Log in

Changes related to "Projectile C++"

← Projectile C++

This is a list of changes made recently to pages linked from a specified page (or to members of a specified category).
Pages on your watchlist are bold.

<fieldset class="rcoptions">
<legend>Recent changes options</legend>
Show last 50 | 100 | 250 | 500 changes in last 1 | 3 | 7 | 14 | 30 days
Hide minor edits | Show bots | Hide anonymous users | Hide logged-in users | <a href="/index.php?title=Special:RecentChangesLinked&hidemyself=1&target=Projectile_C%2B%2B" title="Special:RecentChan


ACK)
		and wpn:StillWaiting() and ! wpn:GetReloading() and ! wpn:GetCustomize() and wpn:Clip1() >= wpn:GetValue("AmmoPerShot")
		and wpn:GetNextSecondaryFire() < CurTime() and wpn:GetAnimLockTime() < CurTime() and (wpn:GetNextPrimaryFire() - CurTime()) < 0.15 then
		wpn:SetCharge(true)
	elseif ! wpn.NoBuffer and wpn:GetCharge() and ! wpn:StillWaiting() and ! owner then
		wpn:SetCharge(false)
		wpn:PrimaryAttack()
	end
end

PLUGIN.LastEyeAngles = Angle(0, 0, 0)
PLUGIN.RecoilRise = Angle(0, 0, 0)

function PLUGIN:StartCommand(ply, cmd)
	local wpn = ply:GetActiveWeapon()
	local mt_notair = ply:GetMoveType() == MOVETYPE_NOCLIP or ply:GetMoveType() == MOVETYPE_LADDER

	if ! mt_notair then
		if ply:IsOnGround() and ! ply.exp_tacrp_LastOnGround then
			ply.exp_tacrp_LastAirDuration = CurTime() - (ply.exp_tacrp_LastLeaveGroundTime or 0)
			ply.exp_tacrp_LastOnGroundTime = CurTime()
		elseif ! ply:IsOnGround() and ply.exp_tacrp_LastOnGround then
			ply.exp_tacrp_LastLeaveGroundTime = CurTime()
		end
	end
	ply.exp_tacrp_LastOnGround = ply:IsOnGround() or mt_notair

	if ! wpn.ArcticTacRP then
		PLUGIN.RecoilRise = Angle(0, 0, 0)
		PLUGIN.LastEyeAngles = ply:EyeAngles()
		return
	end

	local diff = PLUGIN.LastEyeAngles - cmd:GetViewAngles()
	local recrise = PLUGIN.RecoilRise

	if recrise.p > 0 then
		recrise.p = math.Clamp(recrise.p, 0, recrise.p - diff.p)
	elseif recrise.p < 0 then
		recrise.p = math.Clamp(recrise.p, recrise.p - diff.p, 0)
	end

	if recrise.y > 0 then
		recrise.y = math.Clamp(recrise.y, 0, recrise.y - diff.y)
	elseif recrise.y < 0 then
		recrise.y = math.Clamp(recrise.y, recrise.y - diff.y, 0)
	end

	recrise:Normalize()
	PLUGIN.RecoilRise = recrise

	if wpn:GetLastRecoilTime() + wpn:RecoilDuration() > CurTime() then
		local kick = wpn:GetValue("RecoilKick")
		local recoildir = wpn:GetRecoilDirection()
		local rec = 1

		if PLUGIN.ConVars["altrecoil"]:GetBool() then
			rec = 1 + math.Clamp((wpn:GetRecoilAmount() - 1) / (wpn:GetValue("RecoilMaximum") - 1), 0, 1)
			kick = kick + wpn:GetValue("RecoilSpreadPenalty") * wpn:GetValue("RecoilAltMultiplier")
			-- local recgain = rec * wpn:GetValue("RecoilSpreadPenalty") * 250
			-- kick = kick + recgain
		end

		if wpn:GetInBipod() then
			kick = kick * math.min(1, wpn:GetValue("BipodKick"))
		end

		kick = kick * PLUGIN.ConVars["mult_recoil_kick"]:GetFloat()

		local eyeang = cmd:GetViewAngles()

		local suppressfactor = 1
		if wpn:UseRecoilPatterns() and wpn:GetCurrentFiremode() ~= 1 then
			local


 String picUrl;

    /**
     * 点击图文消息跳转链接
     */
    private String url;

    public Article(){}

    public Article(String title, String desc, String picUrl, String url) {
        this.title = title;
        this.desc = desc;
        this.picUrl = picUrl;
        this.url = url;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    public String getPicUrl() {
        return picUrl;
    }

    public void setPicUrl(String picUrl) {
        this.picUrl = picUrl;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    @Override
    public String toString() {
        return "ArticleItem{" +
                "title='" + title + '\'' +
                ", desc='" + desc + '\'' +
                ", picUrl='" + picUrl + '\'' +
                ", url='" + url + '\'' +
                '}';
    }
}
package me.hao0.wechat.model.message.receive.event;

/**
 * 上报地理位置事件
 * Author: haolin
 * Email: haolin.h0@gmail.com
 * Date: 9/11/15
 */
public class RecvLocationEvent extends RecvEvent {

    /**
     * 纬度
     */
    private String latitude;

    /**
     * 经度
     */
    private String longitude;

    /**
     * 精度
     */
    private String precision;

    public RecvLocationEvent(RecvEvent e){
        super(e);
        this.eventType = e.eventType;
    }

    @Override
    public String getEventType() {
        return RecvEventType.LOCATION.value();
    }

    public String getLatitude() {
        return latitude;
    }

    public void setLatitude(String latitude) {
        this.latitude = latitude;
    }

    public String getLongitude() {
        return longitude;
    }

    public void setLongitude(String longitude) {
        this.longitude = longitude;
    }

    public String getPrecision() {
        return precision;
    }

    public void setPrecision(String precision) {
        this.precision = precision;
    }

    @Override
    public String toString() {
        return "RecvLocationEvent{" +
                "latitude='" + latitude + '\'' +
                ", longitude='" + longitude + '\'' +
                ", precision='" + precision + '\'' +
                "} " + super.toString();
    }
}
package me.hao0.wechat.model.message.receive.event;

/**
 * 关注事件
 * Author: haolin
 * Email: haolin.h0@gmail.com
 * Date: 9/11/15
 */
public class RecvSubscribeEvent extends RecvEvent {

    /**
     * 事件KEY值，是一个32位无符号整数，即创建二维码时的二维码scene_id
     */
    private String eventKey;

    /**
     * 二维码的ticket，可用来换取二维码图片
     */
    private String ticket;

    public RecvSubscribeEvent(RecvEvent e){
        super(e);
        this.eventType = e.eventType;
    }

    @Override
    public String getEventType() {
        return RecvEventType.SUBSCRIBE.value();
    }

    public String getEventKey() {
        return eventKey;
    }

    public void setEventKey(String eve


Trigger'),'../application/porttrigger.asp');
Admin_2_5 = new MenuItem(eval('DDNS'));
Admin_2_5_0 = new MenuItem(eval('DDNS'),'../application/ddns.asp');
Admin_2_6 = new MenuItem(eval('IGMP'));
Admin_2_6_0 = new MenuItem(eval('SNOOPING'),'../application/igmpsnooping.asp');
Admin_2_6_1 = new MenuItem(eval('MLD'),'../application/mld.asp');
Admin_2_7 = new MenuItem(eval('QoS'));
Admin_2_7_0 = new MenuItem(eval('QoS'),'../network/qos.asp');
Admin_2_7_1 = new MenuItem(eval('QoSClass'),'../network/qosclass.asp');
Admin_2_8 = new MenuItem(eval('USBHost'));
Admin_2_8_0 = new MenuItem(eval('FTPServer'),'../application/ftpserver.asp');
Admin_2_8_1 = new MenuItem(eval('PrinterServer'),'../application/printerserver.asp');
Admin_2_9 = new MenuItem(eval('SNTP'));
Admin_2_9_0 = new MenuItem(eval('SNTP'),'../ntwkall/sntp.asp');
Admin_2_10 = new MenuItem(eval('UPNP'));
Admin_2_10_0 = new MenuItem(eval('UPNP'),'../application/upnp.asp');
Admin_2_11 = new MenuItem(eval('PIN'));
Admin_2_11_0 = new MenuItem(eval('PIN'),'../pin/pin.asp');
Admin_3 = new MenuItem(eval('Maintain'));
Admin_3_0 = new MenuItem(eval('Account'));
Admin_3_0_0 = new MenuItem(eval('Account'),'../management/account.asp');
Admin_3_1 = new MenuItem(eval('Device0'));
Admin_3_1_0 = new MenuItem(eval('Reset'),'../management/reset.asp');
Admin_3_1_1 = new MenuItem(eval('Configure'),'../management/cfgfile.asp');
Admin_3_1_2 = new MenuItem(eval('Firmware'),'../management/firmware.asp');
Admin_3_2 = new MenuItem(eval('Diagnose'));
Admin_3_2_0 = new MenuItem(eval('Diagnose'),'../management/diagnose.asp');
Admin_3_3 = new MenuItem(eval('LOG'));
Admin_3_3_0 = new MenuItem(eval('LOG'),'../management/logcfg.asp');
Admin_3_3_1 = new MenuItem(eval('LOG0'),'../management/logview.asp');
Admin_4 = new MenuItem(eval('Wizard'),'',false);
Admin_4_0 = new MenuItem(eval('Wizard'),'',false);
Admin_4_0_0 = new MenuItem(eval('Wizard'),'../wizard/wizard.asp');
Admin_5 = new MenuItem(eval('Help'),'',false);
Admin_5_0 = new MenuItem(eval('Help'),'',false);
Admin_5_0_0 = new MenuItem(eval('Help'),'/lang/help_content.html');
/*!
 * Bootstrap v3.1.1 (http://getbootstrap.com)
 * Copyright 2011-2014 Twitter, Inc.
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 */
if("undefined"==typeof jQuery){throw new Error("Bootstrap's JavaScript requires jQuery")}+function(d){function c(){var f=document.createElement("bootstrap"),e={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var g in e){if(void 0!==f.style[g]){return{end:e[g]}}}return !1}d.fn.emulateTransitionEnd=funct


c__p_TPairT_TUInt64_TFlt_t,
  _swigc__p_TPairT_TUInt64_TInt_t,
  _swigc__p_TPairT_TUInt64_TStr_t,
  _swigc__p_TPairT_TUInt64_TUInt64_t,
  _swigc__p_TPairT_TUInt_TInt_t,
  _swigc__p_TPairT_TUInt_TUInt_t,
  _swigc__p_TPairT_TVecT_TStr_int_t_TInt_t,
  _swigc__p_TPtT_PVecT_TAscFlt_t_t,
  _swigc__p_TPtT_PVecT_TFlt_t_t,
  _swigc__p_TPtT_PVecT_TStr_t_t,
  _swigc__p_TPtT_TBPGraph_t,
  _swigc__p_TPtT_TBigStrPool_t,
  _swigc__p_TPtT_TExcept_t,
  _swigc__p_TPtT_TFRnd_t,
  _swigc__p_TPtT_TMem_t,
  _swigc__p_TPtT_TNEANet_t,
  _swigc__p_TPtT_TNEGraph_t,
  _swigc__p_TPtT_TNGraph_t,
  _swigc__p_TPtT_TNodeEDatNetT_TInt_TFlt_t_t,
  _swigc__p_TPtT_TNodeEDatNetT_TInt_TInt_t_t,
  _swigc__p_TPtT_TNodeEDatNetT_TStr_TInt_t_t,
  _swigc__p_TPtT_TNodeEdgeNetT_TFlt_TFlt_t_t,
  _swigc__p_TPtT_TNodeEdgeNetT_TInt_TInt_t_t,
  _swigc__p_TPtT_TNodeNetT_TFlt_t_t,
  _swigc__p_TPtT_TNodeNetT_TInt_t_t,
  _swigc__p_TPtT_TNodeNetT_TStr_t_t,
  _swigc__p_TPtT_TSInOut_t,
  _swigc__p_TPtT_TSIn_t,
  _swigc__p_TPtT_TSOut_t,
  _swigc__p_TPtT_TStrPool64_t,
  _swigc__p_TPtT_TStrPool_t,
  _swigc__p_TPtT_TUNGraph_t,
  _swigc__p_TPtT_TVecPoolT_TInt_int_t_t,
  _swigc__p_TPtT_TXmlDoc_t,
  _swigc__p_TPtT_TXmlTok_t,
  _swigc__p_TQQueueT_TFlt_t,
  _swigc__p_TQQueueT_TInt_t,
  _swigc__p_TQQueueT_TPairT_TInt_TInt_t_t,
  _swigc__p_TQQueueT_TPairT_TInt_TStr_t_t,
  _swigc__p_TQQueueT_TStr_t,
  _swigc__p_TQQueueT_TVecT_TAscFlt_int_t_t,
  _swigc__p_TQQueueT_TVecT_TFlt_int_t_t,
  _swigc__p_TQuadT_TFlt_TFlt_TFlt_TFlt_t,
  _swigc__p_TQuadT_TFlt_TInt_TInt_TInt_t,
  _swigc__p_TQuadT_TI


 white to avoid other barriers */
  }
}

/*
** barrier that moves collector backward, that is, mark the black object
** pointing to a white object as gray again.
*/
void luaC_barrierback_ (lua_State *L, Table *t) {
  global_State *g = G(L);
  lua_assert(isblack(t) && !isdead(g, t));
  black2gray(t);  /* make table gray (again) */
  linkgclist(t, g->grayagain);
}

/*
** barrier for assignments to closed upvalues. Because upvalues are
** shared among closures, it is impossible to know the color of all
** closures pointing to it. So, we assume that the object being assigned
** must be marked.
*/
void luaC_upvalbarrier_ (lua_State *L, UpVal *uv) {
  global_State *g = G(L);
  GCObject *o = gcvalue(uv->v);
  lua_assert(!upisopen(uv));  /* ensured by macro luaC_upvalbarrier */
  if (keepinvariant(g))
    markobject(g, o);
}

void luaC_fix (lua_State *L, GCObject *o) {
  global_State *g = G(L);
  lua_assert(g->allgc == o);  /* object must be 1st in 'allgc' list! */
  white2gray(o);  /* they will be gray forever */
  g->allgc = o->next;  /* remove object from 'allgc' list */
  o->next = g->fixedgc;  /* link it to 'fixedgc' list */
  g->fixedgc = o;
}

/*
** create a new collectable object (with given type and size) and link
** it to 'allgc' list.
*/
GCObject *luaC_newobj (lua_State *L, int tt, size_t sz) {
  global_State *g = G(L);
  GCObject *o = cast(GCObject *, luaM_newobject(L, novariant(tt), sz));
  o->marked = luaC_white(g);
  o->tt = tt;
  o->next = g->allgc;
  g->allgc = o;
  return o;
}

/* }====================================================== */

/*
** {======================================================
** Mark functions
** =======================================================
*/

/*
** mark an object. Userdata, strings, and closed upvalues are visited
** and turned black here. Other objects are marked gray and added
** to appropriate list to be visited (and turned black) later. (Open
** upvalues are already linked in 'headuv' list.)
*/
static void reallymarkobject (global_State *g, GCObject *o) {
 reentry:
  white2gray(o);
  switch (o->tt) {
    case LUA_TSHRSTR: {
      gray2black(o);
      g->GCmemtrav += sizelstring(gco2ts(o)->shrlen);
      break;
    }
    case LUA_TLNGSTR: {
      gray2black(o);
      g->GCmemtrav += sizelstring(gco2ts(o)->u.lnglen);
      break;
    }
    case LUA_TUSERDATA: {
      TValue uvalue;
      markobjectN(g, gco2u(o)->metatable);  /* mark its metatable */
      gray2black(o);
      g->GCmemtrav += sizeudata(gco2u(o));
      getuservalue(g->mainthread, gco2u(o), &uvalue);
      if (valiswhite(&uvalue)) {  /* markvalue(g, &uvalue); */
        o = gcvalue(&uvalue);
        goto reentry;
      }
      break;
    }
    case LUA_TLCL: {
      linkgclist(gco2lcl(o), g->gray);
      break;
    }
    case LUA_TCCL: {
      linkgclist(gco2ccl(o), g->gray);
      break;
    }
    case LUA_TTABLE: {
      linkgclist(gco2t(o), g->gray);
      break;
    }


using CircuitDiagram.TypeDescription;
using CircuitDiagram.TypeDescription.Conditions;
using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
using CircuitDiagram.TypeDescriptionIO.Xml.Logging;
using CircuitDiagram.Circuit;
using CircuitDiagram.TypeDescriptionIO.Xml.Flatten;

namespace CircuitDiagram.TypeDescriptionIO.Xml.Render
{
    public class XmlRenderGroup : Conditional<List<IXmlRenderCommand>>, IRootFlattenable<RenderDescription>
    {
        public XmlRenderGroup(IConditionTreeItem conditions)
            :base(new List<IXmlRenderCommand>(), conditions)
        {
        }

        public AutoRotateType AutoRotate { get;


4.477 10 10 0 2.136-.67 4.116-1.81 5.74L17 12h3A8 8 0 0 0 6.46 6.228l-.997-1.795zm13.074 15.134A9.961 9.961 0 0 1 12 22C6.477 22 2 17.523 2 12c0-2.136.67-4.116 1.81-5.74L7 12H4a8 8 0 0 0 13.54 5.772l.997 1.795z" />
          </svg>

            196 results

            10 min ago

      <Form />

            <svg
              xmlns="http://www.w3.org/2000/svg"
              viewBox="0 0 24 24"
              width={16}
              height={16}
              className="h-4 w-4 fill-jacarta-700 dark:fill-white group-hover:fill-white"
            >
              <path fill="none" d="M0 0h24v24H0z" />
              <path d="M5.463 4.433A9.961 9.961 0 0 1 12 2c5.523 0 10 4.477 10 10 0 2.136-.67 4.116-1.81 5.74L17 12h3A8 8 0 0 0 6.46 6.228l-.997-1.795zm13.074 15.134A9.961 9.961 0 0 1 12 22C6.477 22 2 17.523 2 12c0-2.136.67-4.116 1.81-5.74L7 12H4a8 8 0 0 0 13.54 5.772l.997 1.795z" />
            </svg>

              196 results

              10 min ago

        <FilterRightMenu />

  );
};

export default Header;
import React, { useState } from "react";

const FilterRightMenu = () => {
  const [activeMenu, setActiveMenu] = useState("all-time");

  const menuItems = [
    { id: "all-time", label: "All Time" },
    { id: "30d", label: "30d" },
    { id: "7d", label: "7d" },
    { id: "24h", label: "24h" },
  ];

  const handleMenuClick = (menuId) => {
    setActiveMenu(menuId);
  };

  return (

      {menuItems.map((menuItem) => (
        <div
          key={menuItem.id}
          className={`flex h-10 w-full cursor-pointer items-center whitespace-nowrap border ${
            activeMenu === menuItem.id
              ? "border-transparent bg-accent text-white"
              : "border-jacarta-100 bg-white dark:border-jacarta-600 dark:bg-jacarta-700"
          } p-3 ${menuItem.id === "all-time" ? "first:round


e"`
	TranID int64  `json:"tranId"`
}
package binance

import (
	"encoding/json"
	"fmt"
	"testing"

	"github.com/adshao/go-binance/v2/common/websocket"
	"github.com/adshao/go-binance/v2/common/websocket/mock"
	"github.com/golang/mock/gomock"
	"github.com/stretchr/testify/suite"
)

func (s *orderListPlaceOtocoServiceWsTestSuite) SetupTest() {
	s.apiKey = "dummyApiKey"
	s.secretKey = "dummySecretKey"
	s.signedKey = "HMAC"
	s.timeOffset = 0

	s.requestID = "1712544408508"

	s.symbol = "LTCBNB"
	s.workingType = OrderTypeLimit
	s.workingSide = SideTypeBuy
	s.workingPrice = "1.5"
	s.workingQuantity = "1"
	s.pendingSide = SideTypeSell
	s.pendingQuantity = "5"
	s.pendingAboveType = OrderTypeStopLoss
	s.pendingAboveStopPrice = "0.5"
	s.pendingBelowType = OrderTypeLimitMaker
	s.pendingBelowPrice = "5"
	s.listClientOrderID = "testOTOCOList"

	s.ctrl = gomock.NewController(s.T())
	s.client = mock.NewMockClient(s.ctrl)

	s.orderListPlaceOtoco = &OrderListPlaceOtocoWsService{
		c:         s.client,
		ApiKey:    s.apiKey,
		SecretKey: s.secretKey,
		KeyType:   s.signedKey,
	}

	s.orderListPlaceOtocoRequest = NewOrderListPlaceOtocoWsRequest().
		Symbol(s.symbol).
		WorkingType(s.workingType).
		WorkingSide(s.workingSide).
		WorkingPrice(s.workingPrice).
		WorkingQuantity(s.workingQuantity).
		PendingSide(s.pendingSide).
		PendingQuantity(s.pendingQuantity).
		PendingAboveType(s.pendingAboveType).
		PendingAboveStopPrice(s.pendingAboveStopPrice).
		PendingBelowType(s.pendingBelowType).
		PendingBelowPrice(s.pendingBelowPrice).
		ListClientOrderID(s.listClientOrderID).
		NewOrderRespType(NewOrderRespTypeRESULT)
}

func (s *orderListPlaceOtocoServiceWsTestSuite) TearDownTest() {
	s.ctrl.Finish()
}

type orderListPlaceOtocoServiceWsTestSuite struct {
	suite.Suite
	apiKey     string
	secretKey  string
	signedKey  string
	timeOffset int64

	ctrl   *gomock.Controller
	client *mock.MockClient

	requestID             string
	symbol                string
	workingType           OrderType
	workingSide           SideType
	workingPrice          string
	workingQuantity       string
	pendingSide           SideType
	pendingQuantity       string
	pendingAboveType      OrderType
	pendingAboveStopPrice string
	pendingBelowType      OrderType
	pendingBelowPrice     string
	listClientOrderID     string

	orderListPlaceOtoco        *OrderListPlaceOtocoWsService
	orderListPlaceOtocoRequest *OrderListPlaceOtocoWsRequest
}

func TestOrderListPlaceOtocoServiceWsPlace(t *testing.T) {
	suite.Run(t, new(orderListPlaceOtocoServiceWsTestSuite))
}

func (s *orderListPlaceOtocoServiceWsTestSuite) TestOrderListPlaceOtoco() {
	s.reset(s.apiKey, s.secretKey, s.signedKey, s.timeOffset)

	s.client.EXPECT().Write(s.requestID, gomock.Any()).Return(nil).AnyTimes()

	err := s.orderListPlaceOtoco.Do(s.requestID, s.orderListPlaceOtocoRequest)
	s.NoError(err)
}

func (s *orderListPlace


0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.

//! An ethernet packet abstraction.

use crate::PrimitiveValues;

use alloc::vec::Vec;
use core::fmt;

use pnet_base::MacAddr;
use pnet_macros::packet;

/// Represents an Ethernet packet.
#[packet]
pub struct Ethernet {
    #[construct_with(u8, u8, u8, u8, u8, u8)]
    pub destination: MacAddr,
    #[construct_with(u8, u8, u8, u8, u8, u8)]
    pub source: MacAddr,
    #[construct_with(u16)]
    pub ethertype: EtherType,
    #[payload]
    pub payload: Vec<u8>,
}

#[test]
fn ethernet_header_test() {
    let mut packet = [0u8; 14];
    {
        let mut ethernet_header = MutableEthernetPacket::new(&mut packet[..]).unwrap();

        let source = MacAddr(0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc);
        ethernet_header.set_source(source);
        assert_eq!(ethernet_header.get_source(), source);

        let dest = MacAddr(0xde, 0xf0, 0x12, 0x34, 0x45, 0x67);
        ethernet_header.set_destination(dest);
        assert_eq!(ethernet_header.get_destination(), dest);

        ethernet_header.set_ethertype(EtherTypes::Ipv6);
        assert_eq!(ethernet_header.get_ethertype(), EtherTypes::Ipv6);
    }

    let ref_packet = [0xde, 0xf0, 0x12, 0x34, 0x45, 0x67, /* destination */
                      0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc, /* source */
                      0x86, 0xdd /* ethertype */];
    assert_eq!(&ref_packet[..], &packet[..]);
}

/// `EtherTypes` are defined at:
/// <http://www.iana.org/assignments/ieee-802-numbers/ieee-802-numbers.xhtml>.
/// These values should be used in the `Ethernet` `EtherType` field.
///
/// FIXME Should include all
/// A handful of these have been selected since most are archaic and unused.
#[allow(non_snake_case)]
#[allow(non_upper_case_globals)]
pub mod EtherTypes {
    use crate::ethernet::EtherType;

    /// Internet Protocol version 4 (IPv4) \[RFC7042\].
    pub const Ipv4: EtherType = EtherType(0x0800);
    /// Address Resolution Protocol (ARP) \[RFC7042\].
    pub const Arp: EtherType = EtherType(0x0806);
    /// Wake on Lan.
    pub const WakeOnLan: EtherType = EtherType(0x0842);
    /// IETF TRILL Protocol \[IEEE\].
    pub const Trill: EtherType = EtherType(0x22F3);
    /// DECnet Phase IV.
    pub const DECnet: EtherType = EtherType(0x6003);
    /// Reverse Address Resolution Protocol (RARP) \[RFC903\].
    pub const Rarp: EtherType = EtherType(0x8035);
    /// AppleTalk - EtherTalk \[Apple\].
    pub const AppleTalk: EtherType = EtherType(0x809B);
    /// AppleTalk Address Resolution Protocol (AARP) \[Apple\].
    pub const Aarp: EtherType = EtherType(0x80F3);
    /// IPX \[Xerox\].
    pub const Ipx: EtherType = EtherType(0x8137);
    /// QNX Qnet \[QNX Software Systems\].
    pub const Qnx: Ether


protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_CICHPMMMFLO_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\021CICHPMMMFLO.proto\"\r\n\013CICHPMMMFLOB\033\n\031em" +
      "u.grasscutter.net.protob\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        });
    internal_static_CICHPMMMFLO_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_CICHPMMMFLO_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_CICHPMMMFLO_descriptor,
        new java.lang.String[] { });
  }

  // @@protoc_insertion_point(outer_class_scope)
}
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: GearActivityStartPlayGearReq.proto

package emu.grasscutter.net.proto;

public final class GearActivityStartPlayGearReqOuterClass {
  private GearActivityStartPlayGearReqOuterClass() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  public interface GearActivityStartPlayGearReqOrBuilder extends
      // @@protoc_insertion_point(interface_extends:GearActivityStartPlayGearReq)
      com.google.protobuf.MessageOrBuilder {

    /**
     * uint32 level_id = 4;
     * @return The levelId.
     */
    int getLevelId();
  }
  /**
   *

   * CmdId: 7344
   * Obf: HAHAOBIBDLN
   *

   *
   * Protobuf type {@code GearActivityStartPlayGearReq}
   */
  public static final class GearActivityStartPlayGearReq extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:GearActivityStartPlayGearReq)
      GearActivityStartPlayGearReqOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GearActivityStartPlayGearReq.newBuilder() to construct.
    private GearActivityStartPlayGearReq(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GearActivityStartPlayGearReq() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new GearActivityStartPlayGearReq();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private GearActivityStartPlayGearReq(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;


ls.CameraUtil.releaseCamera();
        videoSize = com.rex.utils.CameraUtil.openCamera(1280, 720, isFront);
        videoFrame.setVideoSize(videoSize.width, videoSize.height);

        try {
            com.rex.utils.CameraUtil.mCamera.setPreviewTexture(videoFrame.surfaceTexture());
            com.rex.utils.CameraUtil.mCamera.startPreview();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    protected void initView(){
        swtichButton = (Button)findViewById(R.id.switchCamera);
        propsButton = (Button)findViewById(R.id.propsButton);
        shaperButton = (Button)findViewById(R.id.shaperButton);
        filterSpinner = (Spinner)findViewById(R.id.filterSpinner);
        smoothText = (TextView)findViewById(R.id.smoothText);
        smoothValueSeek = (SeekBar)findViewById(R.id.smoothValueBar);
        smoothText.setText("磨皮：0.9");
        smoothValueSeek.setProgress(90);
        shaperValueSeek = (SeekBar)findViewById(R.id.shaperValueBar);

        swtichButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                rotateCamera();
            }
        });

        shaperButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (isShaper){
                    shaperButton.setText("开整形");
                    VSFacer.stopShaper();
                    isShaper = false;
                }
                else{
                    shaperButton.setText("关整形");
                    VSFacer.startShaper();
                    isShaper = true;
                }
            }
        });

        propsButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (isProps){
                    VSProps.stopProps();
                    isProps = false;
                }
                else{
                    VSProps.startProps("/data/data/" + DeviceUtil.getPackageName(TextureActivity.this) + "/TY.zip", false);
                    isProps = true;
                }
            }
        });
        // 设置滤镜
        filterSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                if (videoFrame!=null){
                    String filter = getResources().getStringArray(R.array.filter_name)[i];
                    videoFrame.setExtraFilter(filter);
                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {

            }
        });
        smoothValueSeek.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            public int value;
            @Override
            public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
                value = i;
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                if (videoFrame!=null){
                    float strength = value*(float)1.0/100;
                    videoFrame.setSmoothStrength(strength);
                    smoothText.setText("磨皮："+ strength


ookQ s-9",},
    {step: 10,type:1,label:"Yes",choiceid:1,cssid: "cook46s-10",className: "t-1 cookQ s-10",},
    {step: 10,type:1,label:"No",choiceid:2,cssid: "cook47s-10",className: "t-1 cookQ s-10",},
    {step: 11,type:1,label:"Yes",choiceid:1,cssid: "cook48s-11",className: "t-1 cookQ s-11",},
    {step: 11,type:1,label:"No",choiceid:2,cssid: "cook49s-11",className: "t-1 cookQ s-11",},
    {step: 12,type:1,label:"I wanted to experience free-fall",choiceid:1,cssid: "cook50s-12",className: "t-1 cookQ s-12",},
    {step: 12,type:1,label:"I wanted to do something adventurous",choiceid:2,cssid: "cook51s-12",className: "t-1 cookQ s-12",},
    {step: 13,type:1,label:"Yes",choiceid:1,cssid: "cook52s-13",className: "t-1 cookQ s-13",},
    {step: 13,type:1,label:"No",choiceid:2,cssid: "cook53s-13",className: "t-1 cookQ s-13",},
    {step: 14,type:1,label:"Organize, decorate, and clean. ",choiceid:1,cssid: "cook54s-14",className: "t-1 cookQ s-14",},
    {step: 14,type:1,label:"Explore the neighborhood",choiceid:2,cssid: "cook55s-14",className: "t-1 cookQ s-14",},
    {step: 15,type:1,label:"You don't scare me",choiceid:1,cssid: "cook56s-15",className: "t-1 cookQ s-15",},
    {step: 15,type:1,label:"No thanks",choiceid:2,cssid: "cook57s-15",className: "t-1 cookQ s-15"}
]

let orderQuestions:Question[]=[
    {step:1,type:3,label:"Address, State, City, Zip",cssid: "order1s-1",className: "t-3 orderQ s-1",},
    {step:1,type:1,label:"Find me",cssid: "order2s-1",className: "t-1 orderQ s-1",},
    {step: 2,type:2,label:"Peanuts",cssid: "order3s-2",className: "t-2 orderQ s-2",},
    {step: 2,type:2,label:"Shellfish",cssid: "order4s-2",className: "t-2 orderQ s-2",},
    {step: 2,type:2,label:"Milk (Lactose)",cssid: "order5s-2",className: "t-2 orderQ s-2",},
    {step: 2,type:2,label:"Soy",cssid: "order6s-2",className: "t-2 orderQ s-2",},
    {step: 2,type:2,label:"Wheat (Gluten)",cssid: "order7s-2",className: "t-2 orderQ s-2",},
    {step: 2,type:2,label:"Eggs",cssid: "order8s-2",className: "t-2 orderQ s-2",},
    {step: 2,type:2,label:"Tree Nuts",cssid: "order9s-2",className: "t-2 orderQ s-2",},
    {step: 2,type:3,label:"Other",cssid: "order10s-2",className: "t-3 orderQ s-2",},
    {step: 3,type:2,label:"Vegatarian",css


 gameID_) {
		gameID_ = gameID;
		delete engine_;
		engine_ = new CWCheatEngine(gameID_);
		engine_->CreateCheatFile();
	}

	// We won't parse this, just using it to detect changes to the file.
	std::string str;
	if (File::ReadTextFileToString(engine_->CheatFilename(), &str)) {
		fileCheckHash_ = XXH3_64bits(str.c_str(), str.size());
	}
	fileCheckCounter_ = 0;

	fileInfo_ = engine_->FileInfo();

	// Let's also trigger a reload, in case it changed.
	g_Config.bReloadCheats = true;
	return true;
}

void CwCheatScreen::CreateViews() {
	using namespace UI;
	auto cw = GetI18NCategory(I18NCat::CWCHEATS);
	auto di = GetI18NCategory(I18NCat::DIALOG);
	auto mm = GetI18NCategory(I18NCat::MAINMENU);

	root_ = new AnchorLayout(new LayoutParams(FILL_PARENT, FILL_PARENT));

	TryLoadCheatInfo();  // in case the info is already in cache.
	Margins actionMenuMargins(50, -15, 15, 0);

	LinearLayout *leftColumn = new LinearLayout(ORIENT_VERTICAL, new LinearLayoutParams(400, FILL_PARENT));
	//leftColumn->Add(new Choice(cw->T("Add Cheat")))->OnClick.Handle(this, &CwCheatScreen::OnAddCheat);
	leftColumn->Add(new ItemHeader(cw->T("Import Cheats")));

	Path cheatPath = GetGlobalCheatFilePath();

	std::string root = GetSysDirectory(DIRECTORY_MEMSTICK_ROOT).ToString();

	std::string title = StringFromFormat(cw->T_cstr("Import from %s"), "PSP/Cheats/cheat.db");

	leftColumn->Add(new Choice(title.c_str()))->OnClick.Handle(this, &CwCheatScreen::OnImportCheat);
	leftColumn->Add(new Choice(mm->T("Browse"), ImageID("I_FOLDER_OPEN")))->OnClick.Handle(this, &CwCheatScreen::OnImportBrowse);
	errorMessageView_ = leftColumn->Add(new TextView(di->T("LoadingFailed")));
	errorMessageView_->SetVisibility(V_GONE);

	leftColumn->Add(new ItemHeader(di->T("Options")));
#if !defined(MOBILE_DEVICE)
	leftColumn->Add(new Choice(cw->T("Edit Cheat File")))->OnClick.Handle(this, &CwCheatScreen::OnEditCheatFile);
#endif
	leftColumn->Add(new Choice(di->T("Disable All")))->OnClick.Handle(this, &CwCheatScreen::OnDisableAll);
	leftColumn->Add(new PopupSliderChoice(&g_Config.iCwCheatRefreshIntervalMs, 1, 1000, 77, cw->T("Refresh interval"), 1, screenManager()))->SetFormat(di->T("%d ms"));

	rightScroll_ = new ScrollView(ORIENT_VERTICAL, new LinearLayoutParams(FILL_PARENT, FILL_PARENT, 0.5f));
	rightScroll_->SetTag("CwCheats");
	rightScroll_->RememberPosition(&g_Config.fCwCheatScrollPosition);
	LinearLayout *rightColumn = new LinearLayoutList(ORIENT_VERTICAL, new LinearLayoutParams(200, FILL_PARENT, actionMenuMargins));
	rightScroll_->Add(rightColumn);

	rightColumn->Add(new ItemHeader(cw->T("Cheats")));
	for (size_t i = 0; i < fileInfo_.size(); ++i) {
		rightColumn->Add(new CheckBox(&fileInfo_[i].enabled, fileInfo_[i].name))->OnClick.Add([=](UI::EventParams &) {
			OnCheckBox((int)i);
		});


his.employees = [];
        }
    }

    getEmployees(): Employee[] {
        return this.employees;
    }
}

abstract class Employee {
    constructor(public id: number, public name: string) {}

    public makeJob(): void {
        console.log(`Работник ${name} работает`);
    };
}

class ProjectManager extends Manager {

    constructor(employees: Employee[]) {
        super(employees);
        this.employees = employees;
    }

    force(): void {
        const names: string[] = this.employees.map(emp => emp.name);
        console.log(`Project manager force with ${names.join(', ')}`)
        this.employees.forEach(emp => emp.makeJob());
    }
}

class TeamLead extends Manager {

    constructor(employees: Employee[]) {
        super(employees)
    }

    force(): void {
        const names: string[] = this.employees.map(emp => emp.name);
        console.log(`TeamLead force with ${names.join(', ')}`);
        this.employees.forEach(emp => emp.makeJob());
    }

    fire(): void {
        console.log('Тимлид не может увольнять работников');
    }
}

class SeniorProgrammer extends Manager {

    constructor(employees: Employee[]) {
        super(employees)
    }

    fire(): void {
        console.log('Senior программист не может увольнять работников');
    }
}

class MiddleProgrammer extends Employee {
    public makeJob(): void {
        console.log(`Middle программист ${name} работает`);
    };
}

class JuniorProgrammer extends Employee {
    public makeJob(): void {
        console.log(`Junior программист ${name} работает`);
    };
}
import { Component, OnInit } from '@angular/core';
import { Hero } from './hero';
import {HeroService} from '../hero.service';
import { MessageService } from '../message.service';

@Component({
  selector: 'app-heroes',
  templateUrl: './heroes.component.html',
  styleUrls: ['./heroes.component.css']
})
export class HeroesComponent implements OnInit {

  hero: Hero = {
    id: 1,
    name: 'Windstorm'
  };

  heroes: Hero[]=[];
  constructor(private heroService : HeroService ) { }

  ngOnInit(): void {
    this.getHeros();
  }

  // selectedHero ?: Hero;
  // onSelect(hero: Hero): void {
  //   this.selectedHero = hero;
  //   this.messageService.add(`HeroesComponent: Selected hero id=${hero.id}`)
  // }

  getHeros():void{
      this.heroService.getHeroes().subscribe(heroes => this.heroes = heroes);
  }
add(name:string):void{
name = name.trim();
if(!name){return ;}
this.heroService.addHero({name} as Hero).subscribe(hero => {
  this.heroes.push(hero);
})
}

delete(hero:Hero): void {
  this.heroes = this.heroes.filter(h => h!=hero)
  this.heroService.deleteHero(hero).subscribe()
;}
}

const hash = () => {
	const id = window.location.hash.replace('#', '');
	if (id) {
		const element = document.getElementById(id)
		if (element) {
			element.scrollIntoView(true);
		}
		else {
			const observer = new MutationObserver(() => {
				const element = document.getElementById(id)
				if (element) {
					observer.disconnect();
					element.scrollIntoView(true);
				}
			});
			observer.observe(document.documentElement, {
				childList: true,
				subtree: true
			});
		}
	}
}

const pushState = history.pushState;
history.pushState = (...args: any[]) => {
    pushState.apply(history, args);


n soc_adc_abs_offset_temp1(&self) -> SOC_ADC_ABS_OFFSET_TEMP1_R {
        SOC_ADC_ABS_OFFSET_TEMP1_R::new((self.bits & 0xff) as u8)
    }
}
impl W {
    #[doc = "Bits 24:31 - 31:24\\]
Software should not rely on the value of a reserved. Writing any other value than the reset value may result in undefined behavior."]
    #[inline(always)]
    pub fn reserved24(&mut self) -> RESERVED24_W {
        RESERVED24_W { w: self }
    }
    #[doc = "Bits 16:23 - 23:16\\]
SOC_ADC offset in relative reference mode at temperature 1 (30C). Signed 8-bit number. Calculated in production test.."]
    #[inline(always)]
    pub fn soc_adc_rel_offset_temp1(&mut self) -> SOC_ADC_REL_OFFSET_TEMP1_W {
        SOC_ADC_REL_OFFSET_TEMP1_W { w: self }
    }
    #[doc = "Bits 8:15 - 15:8\\]
Software should not rely on the value of a reserved. Writing any other value than the reset value may result in undefined behavior."]
    #[inline(always)]
    pub fn reserved8(&mut self) -> RESERVED8_W {
        RESERVED8_W { w: self }
    }
    #[doc = "Bits 0:7 - 7:0\\]
SOC_ADC offset in absolute reference mode at temperature 1 (30C). Signed 8-bit number. Calculated in production test.."]
    #[inline(always)]
    pub fn soc_adc_abs_offset_temp1(&mut self) -> SOC_ADC_ABS_OFFSET_TEMP1_W {
        SOC_ADC_ABS_OFFSET_TEMP1_W { w: self }
    }
}
<gh_stars>0
//! Serial

use core::marker::PhantomData;
use core::ptr;

use hal::serial;
use nb;
use stm32f446::{UART4, UART5, USART1, USART2, USART3, USART6};

use gpio::gpioa::{PA0, PA1, PA10, PA2, PA3, PA9};
use gpio::gpiob::{PB10, PB6, PB7};
use gpio::gpioc::{PC10, PC11, PC12, PC5, PC6, PC7};
use gpio::gpiod::PD2;
use gpio::AF7;
use rcc::{APB1, APB2, Clocks};
use time::Bps;

/// Interrupt event
pub enum Event {
    /// New data has been received
    Rxne,
    /// New data can be sent
    Txe,
}

/// Serial error
#[derive(Debug)]
pub enum Error {
    /// Framing error
    Framing,
    /// Noise error
    Noise,
    /// RX buffer overrun
    Overrun,
    /// Parity check error
    Parity,
    #[doc(hidden)]
    _Extensible,
}

// FIXME these should be "closed" traits
/// TX pin - DO NOT IMPLEMENT THIS TRAIT
pub unsafe trait TxPin<USART> {}

/// RX pin - DO NOT IMPLEMENT THIS TRAIT
pub unsafe trait RxPin<USART> {}

unsafe impl TxPin<USART1> for PA9<AF7> {}
unsafe impl TxPin<USART1> for PB6<AF7> {}

unsafe impl RxPin<USART1> for PA10<AF7> {}
unsafe impl RxPin<USART1> for PB7<AF7> {}

unsafe impl TxPin<USART2> for PA2<AF7> {}

unsafe impl RxPin<USART2> for PA3<AF7> {}

unsafe impl TxPin<USART3> for PB10<AF7> {}
unsafe impl TxPin<US


bstantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
 * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
 * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */
package com.vitorpamplona.amethyst

import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.AnnotatedString
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.platform.app.InstrumentationRegistry
import com.vitorpamplona.amethyst.model.LocalCache
import com.vitorpamplona.amethyst.ui.actions.buildAnnotatedStringWithUrlHighlighting
import com.vitorpamplona.quartz.encoders.decodePublicKey
import com.vitorpamplona.quartz.encoders.toHexKey
import com.vitorpamplona.quartz.events.UserMetadata
import org.junit.Assert.assertEquals
import org.junit.Test
import org.junit.runner.RunWith

/**
 * Instrumented test, which will execute on an Android device.
 *
 * See [testing documentation](http://d.android.com/tools/testing).
 */
@RunWith(AndroidJUnit4::class)
class UrlUserTagTransformationTest {
    @Test
    fun useAppContext() {
        // Context of the app under test.
        val appContext = InstrumentationRegistry.getInstrumentation().targetContext
        assertEquals("com.vitorpamplona.amethyst", appContext.packageName.removeSuffix(".debug"))
    }

    @Test
    fun transformationText() {
        val user =
            LocalCache.getOrCreateUser(
                decodePublicKey("npub1gcxzte5zlkncx26j68ez60fzkvtkm9e0vrwdcvsjakxf9mu9qewqlfnj5z")
                    .toHexKey(),
            )
        user.info = UserMetadata()
        user.info?.displayName = "Vitor Pamplona"

        val transformedText =
            buildAnnotatedStringWithUrlHighlighting(
                AnnotatedString("New Hey @npub1gcxzte5zlkncx26j68ez60fzkvtkm9e0vrwdcvsjakxf9mu9qewqlfnj5z"),
                Color.Red,
            )

        assertEquals("New Hey @Vitor Pamplona", transformedText.text.text)

        assertEquals(0, transformedText.offsetMapping.originalToTransformed(0)) // Before N
        assertEquals(4, transformedText.offsetMapping.originalToTransformed(4)) // Before H
        assertEquals(8, transformedText.offsetMapping.originalToTransformed(8)) // Before @
        assertEquals(8, transformedText.offsetMapping.originalToTransformed(9)) // Before n
        assertEquals(8, transformedText.offsetMapping.originalToTransformed(10)) // Before p
        assertEquals(9, transformedText.offsetMapping.originalToTransformed(11)) // Before u