 r

        let mut h = signature.h;
        let mut H1 = signature.H;
        h.mul_assign(t); // sigma1 ^ t (blinding factor)
        H1.add_assign(&h); // (sigma2 * sigma1 ^ t)

        // (sigma2 * sigma1 ^ t) ^ r
        H1.mul_assign(r);
        Signature { h: h1, H: H1 }
    }

    pub fn unblind(&self, bf: &E::Fr, signature: &Signature<E>) -> Signature<E> {
        let mut H = signature.h;
        let mut inv_bf = bf.clone();
        inv_bf.negate();

        // sigma2 / sigma1 ^ t
        H.mul_assign(inv_bf);
        H.add_assign(&signature.H);

        Signature {
            h: signature.h,
            H: H,
        }
    }

    /// prove knowledge of a signature: commitment phase
    /// returns the proof state, including commitment a and a blind signature blindSig
    pub fn prove_commitment<R: Rng>(
        &self,
        rng: &mut R,
        mpk: &PublicParams<E>,
        signature: &Signature<E>,
        tOptional: Option<Vec<E::Fr>>,
        ttOptional: Option<E::Fr>,
    ) -> ProofState<E> {
        let v = E::Fr::rand(rng);
        let blindSig = self.blind(rng, &v, signature);
        let mut t = tOptional.unwrap_or(Vec::<E::Fr>::with_capacity(self.Y2.len()));
        let tt = ttOptional.unwrap_or(E::Fr::rand(rng));
        let mut a = E::Fqk::one();
        // TODO: consider optimizations to pairing in loop
        for j in 0..self.Y2.len() {
            if t.len() == j {
                t.push(E::Fr::rand(rng));
            }
            let mut gy = E::pairing(blindSig.h, self.Y2[j]);
            gy = gy.pow(t[j].into_repr());
            a.mul_assign(&gy);
        }
        let mut h = E::pairing(blindSig.h, mpk.g2);
        h = h.pow(tt.into_repr());
        a.mul_assign(&h);
        ProofState {
            v,
            t,
            tt,
            a,
            blindSig,
        }
    }

    /// prove knowledge of a signature: response phase
    /// returns a proof that can be send to the verifier together with the challenge and the blind signature
    pub fn prove_response(
        &self,
        ps: &ProofState<E>,
        challenge: E::Fr,
        message: &mut Vec<E::Fr>,
    ) -> SignatureProof<E> {
        let mut zsig = ps.t.clone();
        let z_len = zsig.len();

        for i in 0..message.len() {
            if i < z_len {
                let mut message1 = message[i];
                message1.mul_assign(&challenge);
                zsig[i].add_assign(&message1);
            }
        }

        let mut zv = ps.tt.clone();
        let mut vic = ps.v.clone();
        vic.mul_assign(&challenge);
        zv.add_assign(&vic);
        SignatureProof { zsig, zv, a: ps.a }
    }
}

pub fn setup<R: Rng, E: Engine>(csprng: &mut R) -> PublicParams<E> {
    let g1 = E::G1::rand(csprng);
    let g2 = E::G2::rand(csprng);
    let mpk = PublicParams { g1: g1, g2: g2 };
    return mpk;
}

///
/// KeyPair - implements the standard CL signature variant by PS - Section


 += 4;
    }
    d->pic_d->pictb.seek(newpos);                  // set to new position

    if (br.width() > 0.0 || br.height() > 0.0) {
        if (corr) {                             // widen bounding rect
            int w2 = painter()->pen().width() / 2;
            br.setCoords(br.left() - w2, br.top() - w2,
                         br.right() + w2, br.bottom() + w2);
        }
        br = painter()->transform().mapRect(br);
        if (painter()->hasClipping()) {
            QRectF cr = painter()->clipBoundingRect();
            br &= cr;
        }

        if (br.width() > 0.0 || br.height() > 0.0) {
            int minx = qFloor(br.left());
            int miny = qFloor(br.top());
            int maxx = qCeil(br.right());
            int maxy = qCeil(br.bottom());

            if (d->pic_d->brect.width() > 0 || d->pic_d->brect.height() > 0) {
                minx = qMin(minx, d->pic_d->brect.left());
                miny = qMin(miny, d->pic_d->brect.top());
                maxx = qMax(maxx, d->pic_d->brect.x() + d->pic_d->brect.width());
                maxy = qMax(maxy, d->pic_d->brect.y() + d->pic_d->brect.height());
                d->pic_d->brect = QRect(minx, miny, maxx - minx, maxy - miny);
            } else {
                d->pic_d->brect = QRect(minx, miny, maxx - minx, maxy - miny);
            }
        }
    }
}

void QPicturePaintEngine::drawEllipse(const QRectF &rect)
{
    Q_D(QPicturePaintEngine);
#ifdef QT_PICTURE_DEBUG
    qDebug() << " -> drawEllipse():" << rect;
#endif
    int pos;
    SERIALIZE_CMD(QPicturePrivate::PdcDrawEllipse);
    d->s << rect;
    writeCmdLength(pos, rect, true);
}

void QPicturePaintEngine::drawPath(const QPainterPath &path)
{
    Q_D(QPicturePaintEngine);
#ifdef QT_PICTURE_DEBUG
    qDebug() << " -> drawPath():" << path.boundingRect();
#endif
    int pos;
    SERIALIZE_CMD(QPicturePrivate::PdcDrawPath);
    d->s << path;
    writeCmdLength(pos, path.boundingRect(), true);
}

void QPicturePaintEngine::drawPolygon(const QPointF *points, int numPoints, PolygonDrawMode mode)
{
    Q_D(QPicturePaintEngine);
#ifdef QT_PICTURE_DEBUG
    qDebug() << " -> drawPolygon(): size=" << numPoints;
#endif
    int pos;

    QPolygonF polygon;
    for (int i=0; i<numPoints; ++i)
        polygon << points[i];

    if (mode == PolylineMode) {
        SERIALIZE_CMD(QPicturePrivate::PdcDrawPolyline);
        d->s << polygon;
    } else {
        SERIALIZE_CMD(QPicturePrivate::PdcDrawPolygon);
        d->s << polygon;
        d->s << (qint8)(mode == OddEvenMode ? 0 : 1);
    }

    writeCmdLength(pos, polygon.boundingRect(), true);
}

void QPicturePaintEngine::drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr)
{
    Q_D(QPicturePaintEngine);
#ifdef QT_PICTURE_DEBUG
    qDebug() << " -> drawPixmap():" << r;
#endif
    int pos;
    SERIALIZE_CMD(QPicturePrivate::PdcDrawPixmap);

    if (d->pic_d->in_


  lr, r5, zr, hs  @ encoding: [0x55,0xea,0x2f,0xae]
# CHECK-NOLOB: csinv   lr, r5, zr, hs  @ encoding: [0x55,0xea,0x2f,0xae]
csinv   lr, r5, zr, hs

# CHECK: cinv    lr, r2, pl  @ encoding: [0x52,0xea,0x42,0xae]
# CHECK-FP: cinv    lr, r2, pl  @ encoding: [0x52,0xea,0x42,0xae]
# CHECK-NOLOB: cinv    lr, r2, pl  @ encoding: [0x52,0xea,0x42,0xae]
csinv   lr, r2, r2, mi

# CHECK: csel r0, r0, r1, eq @ encoding: [0x50,0xea,0x01,0x80]
# CHECK-FP: csel r0, r0, r1, eq @ encoding: [0x50,0xea,0x01,0x80]
# CHECK-NOLOB: csel r0, r0, r1, eq @ encoding: [0x50,0xea,0x01,0x80]
csel r0, r0, r1, eq

// ERROR: :[[@LINE+1]]:{{[0-9]+}}: error: operand must be a register in range [r0, r12] or r14
csel sp, r0, r1, eq

// ERROR: :[[@LINE+1]]:{{[0-9]+}}: error: operand must be a register in range [r0, r12] or r14 or zr
csel r0, sp, r1, eq

// ERROR: :[[@LINE+1]]:{{[0-9]+}}: error: operand must be a register in range [r0, r12] or r14 or zr
csinc r0, sp, r1, eq

// ERROR: :[[@LINE+1]]:{{[0-9]+}}: error: operand must be a register in range [r0, r12] or r14 or zr
csinv r0, sp, r1, eq

// ERROR: :[[@LINE+1]]:{{[0-9]+}}: error: operand must be a register in range [r0, r12] or r14 or zr
csneg r0, sp, r1, eq

// ERROR: :[[@LINE+1]]:{{[0-9]+}}: error: operand must be a register in range [r0, r12] or r14 or zr
csel r0, r0, sp, eq

// ERROR: :[[@LINE+2]]:{{[0-9]+}}: error: instructions in IT block must be predicable
it eq
csel r0, r0, r1, eq

// ERROR: :[[@LINE+2]]:{{[0-9]+}}: error: instructions in IT block must be predicable
it eq
csinc r0, r0, r1, ne

// ERROR: :[[@LINE+2]]:{{[0-9]+}}: error: instructions in IT block must be predicable
it gt
csinv r0, r0, r1, ge

// ERROR: :[[@LINE+2]]:{{[0-9]+}}: error: instructions in IT block must be predicable
it lt
csneg r0, r0, r1, gt


using CommandLine;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace spin
{
    [Verb("run", HelpText = "Run a HoloJs app.")]
    class RunAppOptions
    {
        [Option('u', "uri", Required = true, HelpText = "The URL to run.", SetName ="web")]
        public string Uri { get; set; }

        [Option('u', "path", Required = true, HelpText = "The local path to run.", SetName ="local")]
        public string Path { get; set; }

        [Option('d', "debug", Default = false, Required = false, HelpText = "Enable script debugging. The script will not run until a debugger attaches.")]
        public bool Debug { get; set; }
    }

    [Verb("open", HelpText = "Opens a HoloJs app in Visual Studio Code")]
    class OpenAppOptions
    {
        [Option('p', "path", Required = true, HelpText = "Path to HoloJs app")]
        public string Path { get; set; }
    }

    [Verb("serve", HelpText = "Serve a HoloJs app over HTTP")]
    class ServeAppOptions
    {
        [Option('p', "path", Required = true, HelpText = "The app folder to serve")]
        public string Path { get; set; }

        [Option('q', "qr", Default = false, Required = false, HelpText = "Shows a QR code with the HTTP address of the app")]
        public bool ShowQr { get; set; }
    }

    [Verb("new", HelpText = "Create a new HoloJs app")]
    class AppCreationOptions
    {
        [Option('p', "path", Required = true, HelpText = "Path to save the HoloJs app. The content of the directory will be erased.")]
        public string Path { get; set; }

        [Option('t', "three", Default = true, Required = false, HelpText = "Create a new app based on ThreeJs.")]
        public bool ThreeJs { get; set; }

        [Op


0, 0xae, %sys_tick_cmpr
	wrhpr	%g0, 0xc5, %hsys_tick_cmpr
	.word 0x81983c09  ! 9786: WRHPR_HPSTATE_I	wrhpr	%r0, 0x1c09, %hpstate
T3_irf_ce_838:
!$EV error(3,expr(@VA(.MAIN.T3_irf_ce_838), 16, 16),1,IRF,ce,5,42, x,x,x, x,x,x)
	.word 0xb17c6401  ! 9788: MOVR_I	movre	%r17, 0x1, %r24
	.word 0xb244a172  ! 9791: ADDC_I	addc 	%r18, 0x0172, %r25
	.word 0xb1ec610b  ! 9792: RESTORE_I	restore	%r17, 0x0001, %r24
	.word 0xb6b44000  ! 9794: SUBCcc_R	orncc 	%r17, %r0, %r27
T3_hwint_1354:
!$EV trig_pc_d(3,expr(@VA(.MAIN.T3_hwint_1354), 16, 16)) -> intp(3, 0, 1a)
T3_hwint_1355:
!$EV trig_pc_d(3,expr(@VA(.MAIN.T3_hwint_1355), 16, 16)) -> intp(3, 0, 3c)
	.word 0xb0a52062  ! 9800: SUBcc_I	subcc 	%r20, 0x0062, %r24
	.word 0xbfabc820  ! 9801: FMOVVC	fmovs	%fcc1, %f0, %f31
	.word 0xb6ac4000  ! 9804: ANDNcc_R	andncc 	%r17, %r0, %r27
	.word 0xb3ec2137  ! 9805: RESTORE_I	restore	%r16, 0x0001, %r25
	.word 0xbfed61ea  ! 9807: RESTORE_I	restore	%r21, 0x0001, %r31
	.word 0xb9ed0000  ! 9810: RESTORE_R	restore	%r20, %r0, %r28
	.word 0xb2344000  ! 9812: ORN_R	orn 	%r17, %r0, %r25
	.word 0xbfe50000  ! 9813: SAVE_R	save	%r20, %r0, %r31
	.word 0xb5aa4820  ! 9816: FMOVNE	fmovs	%fcc1, %f0, %f26
T3_hwint_1356:
!$EV trig_pc_d(3,expr(@VA(.MAIN.T3_hwint_1356), 16, 16)) -> intp(3, 0, 17)
	.word 0xb5a00560  ! 9819: FSQRTq	fsqrt
	.word 0xb2c54000  ! 9820: ADDCcc_R	addccc 	%r21, %r0, %r25
T3_irf_ce_841:
!$EV error(3,expr(@VA(.MAIN.T3_irf_ce_841), 16, 16),1,IRF,ce,23,30, x,x,x, x,x,x)
	.word 0xb82ce1e0  ! 9824: ANDN_I	andn 	%r19, 0x01e0, %r28
	.word 0xbb3d6001  ! 9824: SRA_I	sra 	%r21, 0x0001, %r29
	.word 0xb5ab8820  ! 9825: FMOVPOS	fmovs	%fcc1, %f0, %f26
	.word 0xbfa80420  ! 9826: FMOVRZ	dis not found

	.word 0xb3ed8000  ! 9827: REST


消息进行加密，最后将之前生成的被公钥加密的随机数密码，HASH 摘要值（已经被对称算法加密）一起发送给服务器

4. 网站接收浏览器发来的数据之后要做以下的操作：
   a) 使用自己的私钥将信息解密并取出浏览器发送给服务器的随机密码（得到了对称加密算法的秘钥），使用密码解密浏览器发来的握手消息（用对称算法的秘钥解 HASH 摘要值），并验证 HASH 是否与浏览器发来的一致。
   b) 使用随机密码加密一段握手消息，发送给浏览器。

5. 浏览器解密并计算握手消息的 HASH，如果与服务端发来的 HASH 一致，此时握手过程结束，之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密。

![](https://p.ipic.vip/911ipu.jpg)

从上面可以看到，握手的整个过程使用到了数字证书、对称加密、HASH 摘要，非对称加密算法。

此时客户端和服务端都有三个随机数，客户端和服务端用商定的算法利用 3 个随机数生成一个对话秘钥（session key），随后的通信就用这个秘钥进行加密解密，保证通信过程不被别人监听或者窜改。所以唯一的风险点在于这个对话秘钥是否会被窃取，窃取的唯一方式也就是身份冒充，在上述四次握手阶段中窃取到对话秘钥

## 中间人攻击

理论上 HTTPS 可以保证你的通道是安全，不被窃听和篡改的。假如 A 和 B 通讯，我同时对 A 和 B 建立 HTTPS 链接，这样我不就可以窃听了么？实际上是可以的，这种情况证书的作用就来了。我们知道 HTTPS 是有证书的，但是我们使用 SSH 登录是没有证书这回事的，那我们是不是也会被中间人攻击？答案是肯定的，感兴趣的可以查阅相关资料，这里不展开。

## 参考

- [https 的加密方式 介绍 + 常见的加密技术](https://blog.csdn.net/guizaijianchic/article/details/77961418)
- [白话 HTTPS & SSL/TLS](https://www.jianshu.com/


(err, Catch::Contains("not a positive integer"));

    err.clear();
    CHECK_FALSE(tinygltf::ParseUnsignedProperty(&result, &err, JsonConstruct("{\"int\": 0.5}"),
                                                "int", true));
    REQUIRE_THAT(err, Catch::Contains("not a positive integer"));

    // Excessively large values and NaN aren't allowed either.
    err.clear();
    CHECK_FALSE(tinygltf::ParseUnsignedProperty(&result, &err, JsonConstruct("{\"int\": 1e300}"),
                                                "int", true));
    REQUIRE_THAT(err, Catch::Contains("not a positive integer"));

    err.clear();
    {
      JsonDocument o;
      double nan = std::numeric_limits<double>::quiet_NaN();
      tinygltf::JsonAddMember(o, "int", json(nan));
      CHECK_FALSE(tinygltf::ParseUnsignedProperty(
        &result, &err, o,
        "int", true));
      REQUIRE_THAT(err, Catch::Contains("not a positive integer"));
    }
  }
}

TEST_CASE("parse-integer-array", "[bounds-checking]") {
  SECTION("parses valid integers") {
    std::string err;
    std::vector<int> result;
    CHECK(tinygltf::ParseIntegerArrayProperty(&result, &err,
                                              JsonConstruct("{\"x\": [-1, 2, 3]}"), "x", true));
    REQUIRE(err == "");
    REQUIRE(result.size() == 3);
    REQUIRE(result[0] == -1);
    REQUIRE(result[1] == 2);
    REQUIRE(result[2] == 3);
  }

  SECTION("invalid integers") {
    std::string err;
    std::vector<int> result;
    CHECK_FALSE(tinygltf::ParseIntegerArrayProperty(
        &result, &err, JsonConstruct("{\"x\": [-1, 1e300, 3]}"), "x", true));
    REQUIRE_THAT(err, Catch::Contains("not an integer type"));
  }
}

TEST_CASE("pbr-khr-texture-transform", "[material]") {
  tinygltf::Model model;
  tinygltf::TinyGLTF ctx;
  std::string err;
  std::string warn;

  // Loading is expected to fail, but not crash.
  bool ret = ctx.LoadASCIIFromFile(
      &model, &err, &warn,
      "../models/Cube-texture-ext/Cube-textransform.gltf");
  REQUIRE(ret == true);

  REQUIRE(model.materials.size() == 2);
  REQUIRE(model.materials[0].emissiveTexture.extensions.count("KHR_texture_transform") == 1);
  REQUIRE(model.materials[0].emissiveTexture.extensions["KHR_texture_transform"].IsObject());

  tinygltf::Value::Object &texform = model.materials[0].emissiveTexture.extensions["KHR_texture_transform"].Get<tinygltf::Value::Object>();

  REQUIRE(texform.count("scale"));

  REQUIRE(texform["scale"].IsArray());

  // Note: It looks json.hpp parse integer JSON number as integer, not floating point.
  // IsNumber return true either value is int or floating point.
  REQUIRE(texform["scale"].Get(0).IsNumber());
  REQUIRE(texform["scale"].Get(1).IsNumber());

  double scale[2];
  scale[0] = texform["scale"].Get(0).GetNumberAsDouble();
  scale[1] = texform["scale"].Get(1).GetNumberAsDouble();


*

	 * New order of rows is based on input order.
	 *
	 * @param rowsToView
	 * @return
	 */
	public DoubleMatrixDataset<R, C> viewRowSelection(R[] rowsToView) {

		return viewRowSelection(Arrays.asList(rowsToView));

	}

	/**
	 * Creates a new view to this dataset with a subset of rows.
	 *

	 * New order of rows is based on input order.
	 *
	 * @param rowsToView
	 * @return
	 */
	public DoubleMatrixDataset<R, C> viewRowSelection(Collection<R> rowsToView) {

		int[] rowNrs = new int[rowsToView.size()];

		LinkedHashMap<R, Integer> newHashRows = new LinkedHashMap<>(rowsToView.size());

		int i = 0;
		for (R row : rowsToView) {

			//Null pointer below probabli indicates looking for non existing row
			rowNrs[i] = hashRows.get(row);
			newHashRows.put(row, i++);

		}

		if (rowsToView.size() != newHashRows.size()) {
			throw new RuntimeException("Duplicates in rowsToView");
		}

		return new DoubleMatrixDataset<>(matrix.viewSelection(rowNrs, null), newHashRows, this.hashCols);

	}

	/**
	 * Creates a new view to this dataset with a subset of rows.
	 *

	 * New order of rows is based on input order.
	 *
	 * @param rowsToView
	 * @return
	 */
	public DoubleMatrix2D viewRowSelectionMatrix(Collection<R> rowsToView) {

		int[] rowNrs = new int[rowsToView.size()];

		int i = 0;
		for (R row : rowsToView) {

			//Null pointer below probabli indicates looking for non existing row
			rowNrs[i++] = hashRows.get(row);

		}

		return matrix.viewSelection(rowNrs, null);

	}

	/**
	 * Creates a new view to this dataset with a subset of cools.
	 *

	 * New order of cols is based on input order.
	 *
	 * @param colsToView
	 * @return
	 */
	public DoubleMatrixDataset<R, C> viewColSelection(C... colsToView) {

		return viewColSelection(Arrays.asList(colsToView));

	}

	/**
	 * Creates a new view to this dataset with a subset of cools.
	 *

	 * New order of cols is based on input order.
	 *
	 * @param colsToView
	 * @return
	 */
	public DoubleMatrixDataset<R, C> viewColSelection(Collection<C> colsToView) {

		int[] colNrs = new int[colsToView.size()];

		LinkedHashMap<C, Integer> newHashCols = new LinkedHashMap<>(colsToView.size());

		int i = 0;
		for (C col : colsToView) {

			if (!hashCols.containsKey(col)) {
				throw new RuntimeException("Column not found: " + col);
			}
			colNrs[i] = hashCols.get(col);
			newHashCols.put(col, i++);

		}

		if (colsToView.size() != newHashCols.size()) {
			throw new RuntimeException("Duplicates in colsToView");
		}

		return new DoubleMatrixDataset<>(matrix.viewSelection(null, colNrs), this.hashRows, newHashCols);

	}

	/**
	 * Creates a new view to this dataset with a subset of cools.
	 *

	 * New order of cols is based on input order.
	 *
	 * @param colsToView
	 * @return
	 */
	public DoubleMatrixDataset<R, C> viewColSelection(LinkedHashSet<C> colsToView) {

		int[] colNrs = new int[colsToView.size()];

		LinkedHashMap<C, Integer> newHashCols = new LinkedHash


eSphere 官方 ARM 版镜像**）

```bash
# 没有找到同版本的，只能找了一个相近版本的 ARM 架构的镜像
crictl pull docker.io/kubesphere/ks-jenkins:v3.4.1-2.319.3  --platform arm64

# 确保 image 架构是 arm64
[root@ksp-master-1 ~]# crictl inspecti docker.io/kubesphere/ks-jenkins:v3.4.1-2.319.3 | grep arch
      "architecture": "arm64",
```

- 镜像重新打 tag（**为了保持镜像名风格一致**）

```bash
ctr -n k8s.io images tag docker.io/kubesphere/ks-jenkins:v3.4.1-2.319.3 registry.cn-beijing.aliyuncs.com/kubesphereio/ks-jenkins:v3.4.1-2.319.3
```

- 重新部署组件

```bash
# 修改 Deployment 使用的镜像及镜像拉取策略，并重新部署
kubectl set image deployment/devops-jenkins devops-jenkins=registry.cn-beijing.aliyuncs.com/kubesphereio/ks-jenkins:v3.4.1-2.319.3 -n kubesphere-devops-system
kubectl set image deployment/devops-jenkins copy-default-config=registry.cn-beijing.aliyuncs.com/kubesphereio/ks-jenkins:v3.4.1-2.319.3 -n kubesphere-devops-system
kubectl patch deployment devops-jenkins --patch '{"spec": {"template": {"spec": {"containers": [{"name": "devops-jenkins","imagePullPolicy": "IfNotPresent"}]}}}}' -n kubesphere-devops-system
kubectl patch deployment devops-jenkins --patch '{"spec": {"template": {"spec": {"initContainers": [{"name": "copy-default-config","imagePullPolicy": "IfNotPresent"}]}}}}' -n kubesphere-devops-system

# 删除 pod，系统会自动重建
kubectl delete pod devops-jenkins-774fdb948b-fmmls -n kubesphere-devops-system

# 也可以用 rollout（可选，视情况而定）
kubectl rollout restart deployment/devops-jenkins -n kubesphere-devops-system
```

### 5.6 解决 thanos-ruler 异常

- 查看异常 Pod

```bash
[root@ksp-master-1 ~]# kubectl get pods -A -o wide | grep -v Runn | grep -v Com
NAMESPACE                      NAME                                                       READY   STATUS             RESTARTS          AGE     IP              NODE           NOMINATED NODE   READINESS GATES
kubesphere-monitoring-system   thanos-ruler-kubesphere-0                                  1/2     CrashLoopBackOff   200 (2m49s ago)   17h     10.233.116.19   ksp-master-2   <none>           <none>
kubesphere-monitoring-system   thanos-ruler-kubesphere-1                                  1/2     Error              203 (5m21s ago)   17h     10


 ellipsoid to be used as a reference.
	 * @param {Number} [options.granularity=CesiumMath.RADIANS_PER_DEGREE] The distance, in radians, between each latitude and longitude. Determines the number of positions in the buffer.
	 * @param {Boolean} [options.perPositionHeight=false] Use the height of options.positions for each position instead of using options.height to determine the height.
	 * @see PolygonOutlineGeometry#createGeometry
	 * @see PolygonOutlineGeometry#fromPositions
	 * @example
	 * // 1. create a polygon outline from points
	 * var polygon = new Cesium.PolygonOutlineGeometry({
	 *   polygonHierarchy : new Cesium.PolygonHierarchy(
	 *     Cesium.Cartesian3.fromDegreesArray([
	 *       -72.0, 40.0,
	 *       -70.0, 35.0,
	 *       -75.0, 30.0,
	 *       -70.0, 30.0,
	 *       -68.0, 40.0
	 *     ])
	 *   )
	 * });
	 * var geometry = Cesium.PolygonOutlineGeometry.createGeometry(polygon);
	 * // 2. create a nested polygon with holes outline
	 * var polygonWithHole = new Cesium.PolygonOutlineGeometry({
	 *   polygonHierarchy : new Cesium.PolygonHierarchy(
	 *     Cesium.Cartesian3.fromDegreesArray([
	 *       -109.0, 30.0,
	 *       -95.0, 30.0,
	 *       -95.0, 40.0,
	 *       -109.0, 40.0
	 *     ]),
	 *     [new Cesium.PolygonHierarchy(
	 *       Cesium.Cartesian3.fromDegreesArray([
	 *         -107.0, 31.0,
	 *         -107.0, 39.0,
	 *         -97.0, 39.0,
	 *         -97.0, 31.0
	 *       ]),
	 *       [new Cesium.PolygonHierarchy(
	 *         Cesium.Cartesian3.fromDegreesArray([
	 *           -105.0, 33.0,
	 *           -99.0, 33.0,
	 *           -99.0, 37.0,
	 *           -105.0, 37.0
	 *         ]),
	 *         [new Cesium.PolygonHierarchy(
	 *           Cesium.Cartesian3.fromDegreesArray([
	 *             -103.0, 34.0,
	 *             -101.0, 34.0,
	 *             -101.0, 36.0,
	 *             -103.0, 36.0
	 *           ])
	 *         )]
	 *       )]
	 *     )]
	 *   )
	 * });
	 * var geometry = Cesium.PolygonOutlineGeometry.createGeometry(polygonWithHole);
	 * // 3. create extruded polygon outline
	 * var extrudedPolygon = new Cesium.PolygonOutlineGeometry({
	 *   polygonHierarchy : new Cesium.PolygonHierarchy(
	 *     Cesium.Cartesian3.fromDegreesArray([
	 *       -72.0, 40.0,
	 *       -70.0, 35.0,
	 *       -75.0, 30.0,
	 *       -70.0, 30.0,
	 *       -68.0, 40.0
	 *     ])
	 *   ),
	 *   extrudedHeight: 300000
	 * });
	 * var geometry = Cesium.PolygonOutlineGeometry.createGeometry(extrudedPolygon);
	 */
	class PolygonOutlineGeometry {
		constructor(options: {
			polygonHierarchy: PolygonHierarchy;
			height?: number;
			extrudedHeight?: number;
			vertexFormat?: VertexFormat;
			ellipsoid?: Ellipsoid;
			granularity?: number;
			perPositionHeight?: boolean;
		});

		/**
		 * The number of elements used to pack the object into an array.
		 * @type {Number}
		 */
		packedLength: number;

		/**
		 * Stores the provided instance into the provided array.
		 * @param {PolygonOutlineGeometry} value The value to pack.
		 * @param {Number[]} array The array to pack into.
		 * @param {Number} [startingIndex=0] The index into the array at which to start packing the elements.
		 * @returns {Number[]} The array that was packed into
		 */
		static pack(value: PolygonOutlineGeometry, array: number[], startingIndex?: number): number[];

		/**
		 * Retrieves an instance from a packed array.
		 * @param {Number[]} array The packed array


d.SELECT_RETURN_LAST       = 1
card.SELECT_RETURN_NEXT       = 2
card.SELECT_RETURN_PREVIOUS   = 3
card.SELECT_RETURN_FCI        = 0
card.SELECT_RETURN_FCP        = 4
card.SELECT_RETURN_FMD        = 8

function card.select(file_path,return_what,length)
	local command
	local sel_type, sel_file
	local fileid

	sel_file, sel_type = card.make_file_path(file_path)

	if sel_type==nil then
	   return 0x6F00, nil
	end

	if return_what==nil then
	   return_what=card.SELECT_RETURN_FIRST + card.SELECT_RETURN_FCI
	end

	if sel_file==nil or #sel_file==0 then
	   command = bytes.new(8,card.CLA,0xA4,sel_type,return_what)
	else
	   fileid = bytes.new(8,sel_file)
	   command = bytes.new(8,card.CLA,0xA4,sel_type,return_what,#fileid,fileid)
	end

	if length~=nil then
	   command = bytes.concat(command,length)
	else
	   command = bytes.concat(command,"00")
	end

	return card.send(command)
end

-----------------------------------------------------------
-- card.read_record : standard read_record apdu,
-- with optionnal length in "extra"
--
-- IN sfi : a number representing a short file identifier
--          or '.' for the current selected file.
-- IN r : record number to read
-- IN length_expected : number of bytes to read
-- RETURNS : sw, data
-----------------------------------------------------------

function card.read_record(sfi,r,length_expected)
	local command

	if sfi==nil then
	   log.print(log.ERROR,"You must specify a SFI number or '.' in card.read_record()")
	   return 0x6F00, nil
	end

	if sfi=='.' then
	   sfi = 0
	end

	if length_expected==nil then
	   length_expected = 0
	end

	local command = bytes.new(8,card.CLA,0xB2,r,bit.OR(bit.SHL(sfi,3),4),length_expected)
        return card.send(command)
end

-----------------------------------------------------------
-- card.read_binary : standard read_binary apdu
--
-- IN sfi : a number representing a short file identifier
--          or '.' for the current selected file.
-- IN addr : start address of read (or nil for 0)
-- IN length_expected : number of bytes to read (or 0 for 256)
-- RETURNS : sw, data
-----------------------------------------------------------

function card.read_binary(sfi,addr,length_expected)
	local command

	if sfi==nil then
	   log.print(log.ERROR,"You must specify a SFI number or '.' in card.read_binary()")
	   return 0x6F00, nil
	end

	if addr==nil then
	   addr=0
	end

	if length_expected==nil then
	   length_expected=0
	end

	if sfi=='.' then
	   command = bytes.new(8,card.CLA,0xB0,bit.AND(bit.SHR(addr,8),0x7F),bit.AND(addr,0xFF),length_expected)
	else
	   command = bytes.new(8,card.CLA,0xB0,bit.OR(0x80,sfi),addr,length_expected)
	end
	return card.send(command)
end

-----------------------------------------------------------
-- card.read_data : read data command
--
-- RETURNS : sw, data
-----------------------------------------------------------

function card.get_data(id,length_expected)
	local command

	if length_expected==nil then
           length_expected=0
        end
	command = bytes.new(8,card.CLA,0xCA,bit.SHR(id,8),bit.AND(id,0xFF),length_expected)
	return card.send(command)
end

-----------------------------------------------------------
-- card.verify : verify apdu
--
-- IN pin : ASCII string with


 trait_ref.trait_def_id())
        }) {
            let mut sub_visitor = RefVisitor::new(self.cx);
            sub_visitor.visit_trait_ref(trait_ref);
            self.nested_elision_site_lts.append(&mut sub_visitor.all_lts());
        } else {
            walk_poly_trait_ref(self, poly_tref, tbm);
        }
    }

    fn visit_ty(&mut self, ty: &'tcx Ty<'_>) {
        match ty.kind {
            TyKind::OpaqueDef(item, bounds) => {
                let map = self.cx.tcx.hir();
                let item = map.item(item);
                walk_item(self, item);
                walk_ty(self, ty);
                self.lts.extend(bounds.iter().filter_map(|bound| match bound {
                    GenericArg::Lifetime(l) => Some(RefLt::Named(l.name.ident().name)),
                    _ => None,
                }));
            },
            TyKind::BareFn(&BareFnTy { decl, .. }) => {
                let mut sub_visitor = RefVisitor::new(self.cx);
                sub_visitor.visit_fn_decl(decl);
                self.nested_elision_site_lts.append(&mut sub_visitor.all_lts());
                return;
            },
            TyKind::TraitObject(bounds, ref lt, _) => {
                if !lt.is_elided() {
                    self.unelided_trait_object_lifetime = true;
                }
                for bound in bounds {
                    self.visit_poly_trait_ref(bound, TraitBoundModifier::None);
                }
                return;
            },
            _ => (),
        }
        walk_ty(self, ty);
    }
}

/// Are any lifetimes mentioned in the `where` clause? If so, we don't try to
/// reason about elision.
fn has_where_lifetimes<'tcx>(cx: &LateContext<'tcx>, generics: &'tcx Generics<'_>) -> bool {
    for predicate in generics.predicates {
        match *predicate {
            WherePredicate::RegionPredicate(..) => return true,
            WherePredicate::BoundPredicate(ref pred) => {
                // a predicate like F: Trait or F: for<'a> Trait<'a>
                let mut visitor = RefVisitor::new(cx);
                // walk the type F, it may not contain LT refs
                walk_ty(&mut visitor, pred.bounded_ty);
                if !visitor.all_lts().is_empty() {
                    return true;
                }
                // if the bounds define new lifetimes, they are fine to occur
                let allowed_lts = allowed_lts_from(pred.bound_generic_params);
                // now walk the bounds
                for bound in pred.bounds.iter() {
                    walk_param_bound(&mut visitor, bound);
                }
                // and check that all lifetimes are allowed
                if visitor.all_lts().iter().any(|it| !allowed_lts.contains(it)) {
                    return true;
                }
            },
            WherePredicate::EqPredicate(ref pred) => {
                let mut visitor = RefVisitor::new(cx);
                walk_ty(&mut visitor, pred.lhs_ty);
                walk_ty(&mut visitor, pred.rhs_ty);
                if !visitor.lts.is_empty() {
                    return true;
                }
            },
        }
    }
    false
}

struct LifetimeChecker<'cx, 'tcx,


4 = new_zeros_8.scatter_add_(0, index_8, edge_weight_8)
        new_zeros_8 = index_8 = None
        deg_inv_sqrt_4 = deg_4.pow_(-0.5)
        deg_4 = None
        eq_4 = deg_inv_sqrt_4.__eq__(inf)
        masked_fill__4 = deg_inv_sqrt_4.masked_fill_(eq_4, 0)
        eq_4 = masked_fill__4 = None
        getitem_67 = deg_inv_sqrt_4[row_4]
        row_4 = None
        mul_12 = getitem_67 * edge_weight_8
        getitem_67 = edge_weight_8 = None
        getitem_68 = deg_inv_sqrt_4[col_4]
        deg_inv_sqrt_4 = col_4 = None
        edge_weight_9 = mul_12 * getitem_68
        mul_12 = getitem_68 = None
        x_12 = torch._C._nn.linear(
            x_11, l_self_modules_convs_modules_4_modules_lin_parameters_weight_, None
        )
        x_11 = l_self_modules_convs_modules_4_modules_lin_parameters_weight_ = None
        edge_index_i_4 = edge_index_9[1]
        edge_index_j_4 = edge_index_9[0]
        edge_index_9 = None
        x_j_4 = x_12.index_select(-2, edge_index_j_4)
        x_12 = edge_index_j_4 = None
        view_18 = edge_weight_9.view(-1, 1)
        edge_weight_9 = None
        out_12 = view_18 * x_j_4
        view_18 = x_j_4 = None
        view_19 = edge_index_i_4.view((-1, 1))
        edge_index_i_4 = None
        index_9 = view_19.expand_as(out_12)
        view_19 = None
        new_zeros_9 = out_12.new_zeros((1000, 10))
        out_13 = new_zeros_9.scatter_add_(0, index_9, out_12)
        new_zeros_9 = index_9 = out_12 = None
        out_14 = out_13 + l_self_modules_convs_modules_4_parameters_bias_
        out_13 = l_self_modules_convs_modules_4_parameters_bias_ = None
        return (out_14,)


0MjA5NTcpO3VmKCdpJywgMzExMDM5NEYdAARyJwEUGDQ0ODU4MDcBCxk88J-SAsECIWtrWEQyUWpycHZJUUVLLUkxVWtZQUNET3Myd3dBRGdBUUFSSTdrNVF0Tl9aQjFnQVlJWUZhQUJ3QkhqU21nR0FBV1NJQVFTUUFRQ1lBUUNnQVFHb0FRT3dBUUM1QVhXckRXeWFtYWtfd1FGMXF3MXNtcG1wUDhrQldfYVlSMFhaMHpfWkFRQUFBQUFBQVBBXzRBSDY2NzBCOVFFBRQobUFJQW9BSUF0UUkFEAB2DQh4MEFKazJBSUU0QUlBNkFJQS1BSUFnQU1CbUFNQnFBUAXQwHVnTUpVMGxPTXpvME56ZzM0QVAwRllBRXE0cUFBNGdFc29xQUE1QUVBSmdFQWNFRUEFYgEBCERKQgEHDQEYMkFRQThRUQ0OYEFBQVBnRUFJZ0ZzeVUumgKJASFsQk9SV3c2RQE0enJOc0lBUW9BREdhbVoFAhBwUHpvSi6RABBRUFFWUxFYDFBBX1URDAxBQUFXHQwAWR0MAGEdDABjHQzwVWVBQS7YAgDgAsqoTYADAIgDAZADAJgDF6ADAaoDAMAD4KgByAMA0gMqCAoSJDk1MmJlNzEzLTVmMDEtNDdjNi04MWFiLWJjYmNlZDA3Nzc4NRgB0gMqoi0A8MkA2AMA4AMA6AMC-AMAgAQAkgQGL3V0L3YzmAQAogQMMTQuOTguODUuMTU0qATvkgOyBAwIABABGAAgADAAOAK4BADABADIBADSBA8xMDA5NCNTSU4zOjQ3ODfaBAIIAeAEAfAEr4jVSYIFFWNvbS5leGFtcGxlLnNpbXBsZXNybYgFAZgFAKAF____________AcAFAMkFAAAAAAAA8D_SBQkJAAAAAAAAAADYBQHgBQHwBQH6BQQIABAAkAYBmAYAuAYAwQYAAAAAAS8syAYA0AbWM9oGFgoQCTUZAVAQABgA4AYM8gYCCACABwGIBwCgB0E.%26s%3Dd750aeb83a071674d133fe9e3a543e50a27f7ebf;ts=1574420957;cet=0;cecb=\\\"></script>\"\n" +
                "          },\n" +
                "          \"rtb\": {\n" +
                "            \"native\": {\n" +
                "              \"title\": \"Native Renderer Campaign\",\n" +
                "              \"desc\": \"Native Renderer Campaign\",\n" +
                "              \"sponsored\": \"Abhishek Sharma\",\n" +
                "              \"icon\": {\n" +
                "                \"url\": \"http://vcdn.adnxs.com/p/creative-image/73/0d/53/85/730d5385-8952-4f74-9700-693fe2f17da0.png\",\n" +
                "                \"width\": 868,\n" +
                "                \"height\": 996,\n" +
                "                \"prevent_crop\": false\n" +
                "              },\n" +
                "              \"main_img\": {\n" +
                "                \"url\": \"http://vcdn


              "core": {"uri": "lib/core/core.dart"},
            },
          },
        }),
      );

  fs
      .entityForUri(base.resolve("sdk/lib/core/core.dart"))
      .writeAsStringSync(
        defaultDartCoreSource
            .replaceAll("class Object {", "$objectHeader")
            .replaceAll("const Object();", ""),
      );

  final List<CfeDiagnosticMessage> messages = <CfeDiagnosticMessage>[];

  CompilerContext context = new CompilerContext(
    new ProcessedOptions(
      options: new CompilerOptions()
        ..onDiagnostic = messages.add
        ..sdkRoot = base.resolve("sdk/")
        ..fileSystem = fs
        ..compileSdk = true
        ..librariesSpecificationUri = librariesSpecificationUri,
      inputs: [Uri.parse("dart:core"), Uri.parse("dart:collection")],
    ),
  );

  await context.runInContext<void>((CompilerContext c) async {
    await context.options.validateOptions(errorOnMissingInput: false);
    await generateKernelInternal(c, buildSummary: true);
  });
  return messages;
}

Future<void> test() async {
  Set<String> normalErrors = (await outline("class Object {"))
      .map(
        (CfeDiagnosticMessage message) => getMessageCodeObject(message)!.name,
      )
      .toSet();

  Future<void> check(String objectHeader, List<Code> expectedCodes) async {
    List<CfeDiagnosticMessage> messages = (await outline(objectHeader))
        .where(
          (CfeDiagnosticMessage message) =>
              !normalErrors.contains(getMessageCodeObject(message)!.name),
        )
        .toList();
    Expect.setEquals(
      expectedCodes,
      messages.map((CfeDiagnosticMessage m) => getMessageCodeObject(m)),
      objectHeader,
    );
  }

  await check("class Object extends String {", <Code>[codeObjectExtends]);

  await check("class Object implements String, bool {", <Code>[
    codeObjectImplements,
  ]);

  await check("class Object = Object with bool ; class Blah {", <Code>[
    codeObjectExtends,
    codeObjectMixesIn,
  ]);
}

void main() {
  asyncTest(test);
}
// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'package:testing/testing.dart' show Chain;

import 'utils/suite_utils.dart';
import 'spell_checking_utils.dart' as spell;
import 'spelling_test_base.dart';
import 'testing_utils.dart' show checkEnvironment;

void main([List<String> arguments = const []]) => internalMain(
  createContext,
  arguments: arguments,
  displayName: "spelling test not src suite",
  configurationPath: "../testing.json",
);

Future<SpellContext> createContext(
  Chain suite,
  Map<String, String> environment,
) {
  const Set<String> knownEnvironmentKeys = {"interactive", "onlyInGit"};
  checkEnvironment(environment, knownEnvironmentKeys);

  bool interactive = environment["interactive"] == "true";
  bool onlyInGit = environment["onlyInGit"] != "false";
  return new Future.value(
    new SpellContextTest(interactive: interactive, onlyInGit: onlyInGit),
  );
}

class SpellContextTest extends SpellContext {
  SpellContextTest({required bool interactive, required bool onlyInGit})
    : super(interactive: interactive, onlyInGit: onlyInGit);

  @override
  List<spell.D


"bookmark": [{ id:432534, time:65876586 }]
							}
						]
					}
				],
				allVideoIdsInMovieLists = [];

				// ------------   在这里写下答案  -----------------------------------
				// 使用两层嵌套的 forEach 循环，把 movieLists 打平成一个 video id 的列表。
				// ------------   在这里写下答案  -----------------------------------

				return allVideoIdsInMovieLists;

			}
		</textarea>
		<button class="go">运行</button>
		<button class="showAnswer">显示答案</button>

			// Use filter and map to collect video ids with rating of 5.0
			function(str) {
				var fun = eval("(" + str + ")"),
					videos = fun(),
					expected = '[675465,65432445,70111470,654356453]';

				videos = videos.sortBy(function(v) { return v });
				if (JSON.stringify(videos) !== expected) {
					throw "Expected " + expected;
				}
			}

			function() {
				var movieLists = [
						{
							name: "New Releases",
							videos: [
								{
									"id": 70111470,
									"title": "Die Hard",
									"boxart": "http://cdn-0.nflximg.com/images/2891/DieHard.jpg",
									"uri": "http://api.netflix.com/catalog/titles/movies/70111470",
									"rating": 4.0,
									"bookmark": []
								},
								{
									"id": 654356453,
									"title": "Bad Boys",
									"boxart": "http://cdn-0.nflximg.com/images/2891/BadBoys.jpg",
									"uri": "http://api.netflix.com/catalog/titles/movies/70111470",
									"rating": 5.0,
									"bookmark": [{ id:432534, time:65876586 }]
								}
							]
						},
						{
							name: "Dramas",
							videos: [
								{
									"id": 65432445,
									"title": "The Chamber",
									"boxart": "http://cdn-0.nflximg.com/images/2891/TheChamber.jpg",
									"uri": "http://api.netflix.com/catalog/titles/movies/70111470",
									"rating": 4.0,
									"bookmark": []
								},
								{
									"id": 675465,
									"title": "Fracture",
									"boxart": "http://cdn-0.nflximg.com/images/2891/Fracture.jpg",
									"uri": "http://api.netflix.com/catalog/titles/movies/70111470",
									"rating": 5.0,
									"bookmark": [{ id:432534, time:65876586 }]
								}
							]
						}
					],
					allVideoIdsInMovieLists = [];

				movieLists.forEach(function(movieList) {
					movieList.videos.forEach(function(video) {
						allVideoIdsInMovieLists.push(video.id);
					});
				});

				return allVideoIdsInMovieLists;

			}

用 for


ling.SCORE_MAX_IN_FRAME);
    }
    assert.equal(bowling.score(), 300);
  });

  it ('all spare', () => {
    let bowling = new Bowling();
    for (let i = 0; i < 21; i++) {
      bowling.roll(5);
    }
    assert.equal(bowling.score(), 150);
  });

  it ('all nines', () => {
    let bowling = new Bowling();
    for (let i = 0; i < 10; i++) {
      bowling.roll(9);
      bowling.roll(0);
    }
    assert.equal(bowling.score(), 90);
  });

})import { Injectable } from '@angular/core';
import { HERRO} from './mock-heroes';
import { Hero } from './hero';
import { Observable, of } from 'rxjs';
import { MessageService } from './message.service';
import {HttpClient, HttpHeaders} from '@angular/common/http';
import {catchError, tap} from 'rxjs/internal/operators';

const httpOptions = {
  headers: new HttpHeaders({ 'Content-Type': 'application/json' })
};

// 服务装饰器，提供可注入的服务
@Injectable({
  providedIn: 'root'
})
export class HeroService {

  private heroesUrl = 'api/heroes';  // URL to web api
  constructor(
    private http: HttpClient, // 把 HttpClient 注入到构造函数
    private msgService: MessageService) { }

  getHero(): Observable<Hero[]> {

    this.msgService.add('HeroService: fetched heroes');
    return of(HERRO);

  }

  getHeroWithID(id: number): Observable<Hero> {

    this.msgService.add(`HeroService: fetched hero id=${id}`);
    return of(HERRO.find(hero => hero.id === id));
  }

  private log(msg: string) {
    this.msgService.add(`HeroService: ${ msg }`);
  }
  // 网络请求模拟
  private handleError<T> (operation = 'operation', result?: T) {
    return (error: any): Observable<T> => {
      console.error(error);
      this.log(`${operation} failed: ${error.message}`);
      return of(result as T);
    };
  }
  getServeHeroes(): Observable<Hero[]> {
    console.log('哈哈哈');
    // .pipe() 网络异常处理
    return this.http.get<Hero[]>(this.heroesUrl)
      .pipe(
        catchError(this.handleError('getHeroes', []))
      );
  }

  updateHero(hero: Hero): Observable<any> {
    return this.http.put(this.heroesUrl, hero, httpOptions)
      .pipe(
        tap(_ => this.log(`update hero id = ${hero.id}`)),
        catchError(this.handleError<any>('updateHero'))
      );
  }

  getServeHeroesWithID(id: number): Observable<Hero> {
    const url = `${this.heroesUrl}/${id}`;
    console.log(`url = ${url}`);
    return this.http.get<Hero>(url)
      .pipe(
        tap(_ => this.log(`fetched hero id = ${id}`)),
        catchError(this.handleError<Hero>(`getHeroes id = ${id}`))
      );
  }

  addServeHeroes(hero: Hero): Observable<Hero> {
    return this.http.post(this.heroesUrl, hero, httpOptions)
      .pipe(
        tap((hero: Hero) => this.log(`add hero w/id = ${hero.id}`)),
        catchError(this.handleError<Hero>('addHero'))
      );
  }

  deleteServeHero (hero: Hero | number): Observable<Hero> {
    const id = typeof hero === 'number' ? hero : hero.id;
    const url = `${this.heroesUrl}/${id}`;

    return this.http.delete<Hero>(url, h


.Wait(ctx)
				if err != nil {
					log.Error(err, "wait for rate limit failed")
					l.cond.L.Lock()
					continue
				}
				ipv4Set, err := l.factory.AssignNIPv4(eniID, v4Count, l.eni.MAC)

				l.cond.L.Lock()

				if err != nil {
					log.Error(err, "assign ipv4 failed", "eni", eniID)
					l.ipv4.PutDeleting(ipv4Set...)

					l.errorHandleLocked(err)

					continue
				}

				l.popNIPv4Jobs(len(ipv4Set))

				l.ipv4.PutValid(ipv4Set...)

				metric.ResourcePoolIdle.WithLabelValues(metric.ResourcePoolTypeLocal, string(types.IPStackIPv4)).Add(float64(len(ipv4Set)))
				metric.ResourcePoolTotal.WithLabelValues(metric.ResourcePoolTypeLocal, string(types.IPStackIPv4)).Add(float64(len(ipv4Set)))

			}

			if v6Count > 0 {
				l.cond.L.Unlock()

				err := l.rateLimitv6.Wait(ctx)
				if err != nil {
					log.Error(err, "wait for rate limit failed")
					l.cond.L.Lock()
					continue
				}
				ipv6Set, err := l.factory.AssignNIPv6(eniID, v6Count, l.eni.MAC)

				l.cond.L.Lock()

				if err != nil {
					log.Error(err, "assign ipv6 failed", "eni", eniID)

					l.ipv6.PutDeleting(ipv6Set...)

					l.errorHandleLocked(err)

					continue
				}

				l.popNIPv6Jobs(len(ipv6Set))

				l.ipv6.PutValid(ipv6Set...)

				metric.ResourcePoolIdle.WithLabelValues(metric.ResourcePoolTypeLocal, string(types.IPStackIPv6)).Add(float64(len(ipv6Set)))
				metric.ResourcePoolTotal.WithLabelValues(metric.ResourcePoolTypeLocal, string(types.IPStackIPv6)).Add(float64(len(ipv6Set)))
			}
		}

		l.cond.Broadcast()
	}
}

func (l *Local) Dispose(n int) int {
	l.cond.L.Lock()
	defer l.cond.L.Unlock()

	if l.eni == nil || l.status != statusInUse {
		return 0
	}

	log := logf.Log.WithValues("eni", l.eni.ID, "mac", l.eni.MAC)

	defer l.cond.Broadcast()

	// 1. check if can dispose the eni
	if n >= max(len(l.ipv4), len(l.ipv6)) {
		if l.canDispose() {
			log.Info("dispose eni")
			l.status = statusDeleting
			return max(len(l.ipv4), len(l.ipv6))
		}
	}

	// 2. dispose invalid first
	// it is not take into account
	for _, v := range l.ipv4 {
		if v.InUse() || v.Valid() {
			continue
		}
		log.Info("dispose invalid ipv4", "ip", v.ip.String())
		v.Dispose()
	}
	for _, v := range l.ipv6 {
		if v.InUse() || v.Valid() {
			continue
		}
		log.Info("dispose invalid ipv6", "ip", v.ip.String())
		v.Dispose()
	}

	// 3. dispose idle
	left := min(len(l.ipv4.Idles()), n)

	for i := 0; i < left; i++ {
		for _, v := range l.ipv4 {
			if v.InUse() || v.Deleting() {
				continue
			}
			v.Dispose() // small problem for primary ip
			m


 upPacket = outBus.poll() ?: continue
			PacketUtils.sendPacketNoEvent(upPacket)
		}

		inBus.clear()
		outBus.clear()
		ignoreBus.clear()
	}

	@EventTarget(priority = -100)
	fun onPacket(event: PacketEvent) {
		mc.thePlayer ?: return
		mc.theWorld ?: return
		val packet = event.packet ?: return
		if (ignoreBus.remove(packet)) return

		if ((fakeLagMode.get().equals("outbound", true) || fakeLagMode.get().equals("all", true))
			&& packet::class.java!!.getSimpleName().startsWith("C", true)
			&& (!fakeLagInclude.get() || fakeLagIncludeClasses.get().split(",").find { packet::class.java!!.getSimpleName().contains(it, true) } != null)
			&& (!fakeLagExclude.get() || fakeLagExcludeClasses.get().split(",").find { packet::class.java!!.getSimpleName().contains(it, true) } == null)) {
			debug("outbound, ${packet::class.java!!.getSimpleName()}")
			outBus.add(packet as Packet<INetHandlerPlayServer>)
			ignoreBus.add(packet)
			event.cancelEvent()
		}

		if ((fakeLagMode.get().equals("inbound", true) || fakeLagMode.get().equals("all", true))
			&& packet::class.java!!.getSimpleName().startsWith("S", true)
			&& (!fakeLagInclude.get() || fakeLagIncludeClasses.get().split(",").find { packet::class.java!!.getSimpleName().contains(it, true) } != null)
			&& (!fakeLagExclude.get() || fakeLagExcludeClasses.get().split(",").find { packet::class.java!!.getSimpleName().contains(it, true) } == null)) {
			debug("inbound, ${packet::class.java!!.getSimpleName()}")
			inBus.add(packet as Packet<INetHandlerPlayClient>)
			ignoreBus.add(packet)
			event.cancelEvent()
		}
	}

	@EventTarget
	fun onWorld(event: WorldEvent) {
		inBus.clear()
		outBus.clear()
		ignoreBus.clear()

		inTimer.reset()
		outTimer.reset()
	}

	@EventTarget(priority = -5)
	fun onUpdate(event: UpdateEvent) {
		mc.netHandler ?: return

		if (!inBus.isEmpty() && ((fakeLagMoveOnly.get() && !MovementUtils.isMoving()) || inTimer.hasTimePassed(inDelay.toLong()))) {
			while (inBus.size > 0)
				inBus.poll()?.processPacket(mc.netHandler)
			inDelay = RandomUtils.nextInt(minRand.get(), maxRand.get())
			inTimer.reset()
			debug("poll (in)")
		}
		if (!outBus.isEmpty() && ((fakeLagMoveOnly.get() && !MovementUtils.isMoving()) || outTimer.hasTimePassed(outDelay.toLong()))) {
			while (outBus.size > 0) {
				val upPacket = outBus.poll() ?: continue
				PacketUtils.sendPacketNoEvent(upPacket)
			}
			outDelay = RandomUtils.nextInt(minRand.get(), maxRand.get())
			outTimer.reset()
			debug("poll (out)")
		}
	}
}
/*
 * LiquidBounce++ Hacked Client
 * A free open source mixin-based injection hacked client for Minecraft using Minecraft Forge.
 * https://github.com/PlusPlusMC/LiquidBouncePlusPlus/
 */
package net.ccbluex.liquidbounce.features.module.modules.combat

import net.ccbluex.liquidbounce.event.EventTarget
import net.ccbluex.liquidbounce.event.UpdateEvent
import net.ccbluex.liquidbounce.features.module.Module
import net.ccbluex.liquidbounce.features.module.ModuleCategory
import net.ccbluex.liquidbounce.features.module.ModuleInfo
import net.ccbluex.liquidbounce.utils.InventoryUtils
import net.ccbluex.liquidbounce.utils.timer.MSTimer
import net.ccbluex.liquidbounce.value.BoolValue
import net.ccbluex.liquidbounce.value.FloatVal


mpleDateFormat("yyyy-MM-dd-HH.mm.ss").format1(Clock.System.now())}.txt"

                val stream = FileOutputStream(crashReportPath)

                stream.write(details.toByteArray(StandardCharsets.UTF_8))
                stream.close()
            } catch (exception: Throwable) {
                exception.printStackTrace()
                crashReportPath = null
            }

            if (ErosOptions.disabled) {
                this?.printStackTrace()
                ShutdownManager.shutdown(this?.message, AbstractShutdownReason.CRASH)
                return
            }

            if (!JavaFXInitializer.initializing && !JavaFXInitializer.initialized) {
                try {
                    JavaFXInitializer.start()
                } catch (exception: Throwable) {
                    Log.log(LogMessageType.JAVAFX, LogLevels.WARN) { "Can not show crash report screen!" }
                    exception.printStackTrace()
                    return
                }
            }

            for (i in 0 until 10) {
                try {
                    JavaFXInitializer.await()
                } catch (error: InterruptedException) {
                    continue
                }
                break
            }
            if (!JavaFXInitializer.initialized) {
                Log.log(LogMessageType.JAVAFX, LogLevels.FATAL) { "JavaFX Toolkit still not initialized, can't wait longer. Exit!" }
                ShutdownManager.shutdown(reason = AbstractShutdownReason.CRASH)
                return
            }

            JavaFXUtil.runLater {
                val fxmlLoader = FXMLLoader(ErosCrashReport::class.java.getResource("/assets/minosoft/eros/crash/crash_screen.fxml"))
                val parent = fxmlLoader.load<Parent>()
                val stage = Stage()
                stage.initModality(Modality.APPLICATION_MODAL)
                stage.title = "Fatal Crash - Minosoft"
                stage.scene = Scene(parent)
                stage.icons.setAll(JavaFXUtil.MINOSOFT_LOGO)
                ErosCrashReport::class.java.getResource("/assets/minosoft/eros/style.css")?.toExternalForm()?.let { stage.scene.stylesheets.add(it) }

                val crashReport = fxmlLoader.getController<ErosCrashReport>()
                crashReport.exception = this
                crashReport.details = details
                crashReport.crashReportPath = crashReportPath
                crashReport.stage = stage

                stage.setOnCloseRequest { ShutdownManager.shutdown(this?.message, AbstractShutdownReason.CRASH) }
                stage.show()
            }
        }
    }
}
/*
 * Minosoft
 * Copyright (C) 2020-2022 Moritz Zwerger
 *
 * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
 *
 * This software is not affiliated with Mojang AB, the original developer of Minecraft.
 */

package de.bixilon.minosoft.gui.eros.main.play

import de.bixilon.minosoft.gui.eros.controller.EmbeddedJavaFXController
import de.bixilon.minosoft.gui.eros.main.play.server.Refreshable
import de.bixilon.minosoft.gui.eros.main.play.server.ServerListController
import de.bixilon.minosoft.gui.eros.main.play.server.type.Server


告讓我們對納迦部隊的組成有了壹個更清晰的概念。納迦的皇室成員在他們的部隊中具有最高的權威性。","皇室成員中的沙爾紮魯是個極端殘酷的納迦，偵查報告表明最近他在南部的遺跡中發現了壹塊奇怪的古代遺物，那個地方就在恐怖之島那裏。","妳的任務就是結果他，然後把那塊遺物給我帶回來進行研究。"}, {"消滅沙爾紮魯，然後把神秘遺物交給羽月要塞的拉托尼庫斯·月矛。"}},
[2871] = {"遞送遺物", {"如果妳能幫我將這個東西送給我的妻子維斯提亞，那我會非常感激的。她不僅是我們這裏的女祭司，也會是妳所見過的最博學的學者之壹。我即使抓破頭皮也搞不清楚這個東西到底是什麽，可我的妻子不同，如果世界上有人能知道這東西是什麽，那無疑就是她了……我們也迫切地需要知道真相！","拜托了，<name>。"}, {"將神秘遺物交給羽月要塞的維斯提亞·月矛。"}},
[2872] = {"斯杜雷的債務", {"我的老朋友欠我壹瓶特殊的朗姆酒。他在塔納利斯沙漠的熱砂港裏經營著壹家酒吧，他向我保證說，那裏的朗姆酒絕對比藏寶海灣的任何酒都要香醇，還說如果我喝了他的酒不滿意的話，那他就會雙倍奉還他欠我的錢！","好吧，我想他現在已經不像他上次說這話的時候那麽自信了，他害怕給我嘗他的朗姆酒了。但是我還是想繼續這個賭註，那麽妳就替我去和他談談吧……"}, {"與熱砂港的斯杜雷談壹談。"}},
[2873] = {"斯杜雷的貨物", {"我欠藏寶海灣的“海狼”馬克基雷壹些朗姆酒，那是打賭輸的，但我現在壹瓶朗姆酒都沒有了！科爾戈船長偷了我最後壹船貨，他把它們藏在南邊的那個戒備森嚴的海盜鎮裏。","如果妳能找到我的那批朗姆酒並把它們給我拿回來的話，那我就可以向馬克基雷


= 0x0FFF;
            return tag.Type & TYPE_UDT_ID_MASK;
        }

        static bool TagIsProgram(TagInfo tag, out string prefix)
        {
            if (tag.Name.StartsWith("Program:"))
            {
                prefix = tag.Name;
                return true;
            }
            else
            {
                prefix = string.Empty;
                return false;
            }
        }
    }

}


/***
* This code is a part of EvoApproxLib library (ehw.fit.vutbr.cz/approxlib) distributed under The MIT License.
* When used, please cite the following article(s): V. Mrazek, Z. Vasicek and R. Hrbacek, "Role of circuit representation in evolutionary design of energy-efficient approximate circuits" in IET Computers & Digital Techniques, vol. 12, no. 4, pp. 139-149, 7 2018. doi: 10.1049/iet-cdt.2017.0188
* This file contains a circuit from a sub-set of pareto optimal circuits with respect to the pwr and mse parameters
***/
// MAE% = 1.56 %
// MAE = 128
// WCE% = 3.12 %
// WCE = 256
// WCRE% = 100.00 %
// EP% = 99.98 %
// MRE% = 4.26 %
// MSE = 20920
// PDK45_PWR = 0.012 mW
// PDK45_AREA = 26.8 um2
// PDK45_DELAY = 0.27 ns
#include <stdint.h>
#include <stdlib.h>

uint64_t add12u_2L7(uint64_t a, uint64_t b) {
  uint64_t o = 0;
  int n_356=0, n_414=0, n_36=0, n_42=0, n_37=0, n_23=0, n_22=0, n_21=0, n_20=0, n_27=0;
  int n_26=0, n_25=0, n_24=0, n_29=0, n_28=0, n_348=0, n_381=0, n_380=0, n_349=0, n_39=0;
  int n_38=0, n_415=0, n_8=0, n_9=0, n_4=0, n_5=0, n_6=0, n_7=0, n_0=0, n_1=0;
  int n_2=0, n_3=0, n_30=0, n_31=0, n_32=0, n_33=0, n_34=0, n_35=0, n_18=0, n_19=0;
  int n_16=0, n_17=0, n_14=0, n_15=0, n_12=0, n_13=0, n_10=0, n_11=0, n_45=0, n_44=0;
  int n_43=0, n_47=0, n_46=0, n_41=0, n_40=0;
  n_0 = (a >> 0) & 0x1;
  n_1 = (a >> 0) & 0x1;
  n_2 = (a >> 1) & 0x1;
  n_3 = (a >> 1) & 0x1;
  n_4 = (a >> 2) & 0x1;
  n_5 = (a >> 2) & 0x1;
  n_6 = (a >> 3) & 0x1;
  n_7 = (a >> 3) & 0x1;
  n_8 = (a >> 4) & 0x1;
  n_9 = (a >> 4) & 0x1;
  n_10 = (a >> 5) & 0x1;
  n_11 = (a >> 5) & 0x1;
  n_12 = (a >> 6) & 0x1;
  n_13 = (a >> 6) & 0x1;
  n_14 = (a >> 7) & 0x1;
  n_15 = (a >> 7) & 0x1;
  n_16 = (a >> 8) & 0x1;
  n_17 = (a >> 8) & 0x1;
  n_18 = (a >> 9) & 0x1;
  n_19 = (a >> 9) & 0x1;
  n_20 = (a >> 10) & 0x1;
  n_21 = (a >> 10) & 0x1;
  n_22 = (a >> 11) & 0x1;
  n_23 = (a >> 11) & 0x1;
  n_24 = (b >> 0) & 0x1;
  n_25 = (b >> 0) & 0x1;
  n_26 = (b >> 1) & 0x1;
  n_27 = (b >> 1) & 0x1;
  n_28 = (b >> 2) & 0x1;
  n_29 = (b >> 2) & 0x1;
  n_30 = (b >> 3) & 0x1;
  n_31 = (b >> 3) & 0x1;
  n_32 = (b >> 4) & 0x1;
  n_33 = (b >> 4) & 0x1;
  n_34 = (b >> 5) & 0x1;
  n_35 = (b >> 5) & 0x1;
  n_36 = (b >> 6) & 0x1;
  n_37 = (b >> 6) & 0x1;
  n_38 = (b >> 7) & 0x1;
  n_39 = (b >> 7) & 0x1;
  n_40 = (b >> 8) & 0x1;
  n_41 = (b >> 8) & 0x1;
  n_42 = (b >> 9) & 0x1;
  n_43 = (b >> 9) & 0x1;
  n_44 = (b >> 10) & 0x1;
  n_45 = (b >> 10) & 0x1;
  n_46 = (b >> 11) & 0x1;
  n_47 = (b >> 11) & 0x1;
  n_348 = n_18 ^ n_42 ^n_40;
  n_349 = (n_18 & n_42) | (n_42 & n_40) | (n_18 & n_40);
  n_356 = n_349;
  n_380 = n_20 ^ n_44 ^n_356;
  n_381 = (n_20 & n_44) | (n_44 & n_356) | (n_20 & n_356);
  n_414 = n_22 ^ n_46 ^n_381;
  n_415 = (n_22 & n_46) | (n_46 & n_381) | (n_22 & n_381);
  o |= (n_24 & 0x01) << 0;
  o |= (n_30 & 0x01) << 1;
  o |= (n_8 & 0x01) << 2;
  o |= (n_6 & 0x01) << 3;
  o |= (n_38 & 0x01) << 4;
  o |= (n_34 & 0x01) << 5;
  o |= (n_36 & 0x01) << 6;
  o |= (n_14 & 0x01) << 7;
  o |= (n_16 & 0x01) << 8;
  o |= (n_348 & 0x01) << 9;
  o |= (n_380 & 0x01) << 10;
  o |= (n_414 & 0x01) << 11;
  o |= (n_415 & 0x01) << 12;
  return o;
}


pg = pg or {}
pg.aircraft_template_258 = {
	[84064] = {
		id = 84064,
		base = 84060,
		max_hp = 56,
		hp_growth = 2150,
		weapon_ID = {
			59044,
			59444
		}
	},
	[84065] = {
		id = 84065,
		base = 84060,
		max_hp = 61,
		hp_growth = 2352,
		weapon_ID = {
			59045,
			59445
		}
	},
	[84066] = {
		id = 84066,
		base = 84060,
		max_hp = 66,
		hp_growth = 2554,
		weapon_ID = {
			59046,
			59446
		}
	},
	[84067] = {
		id = 84067,
		base = 84060,
		max_hp = 72,
		hp_growth = 2755,
		weapon_ID = {
			59047,
			59447
		}
	},
	[84080] = {
		name = "试作型舰载FW-190 A-5",
		max_hp = 38,
		accuracy = 23,
		model_ID = "Fw190A5",
		ACC_growth = 0,
		crash_DMG = 70,
		dodge = 0.315,
		attack_power = 2,
		dodge_limit = 10,
		type = 1,
		AP_growth = 2000,
		icon = "Fw190A5",
		funnel_behavior = "",
		nationality = 4,
		hp_growth = 1478,
		speed = 51,
		id = 84080,
		scale = 1,
		weapon_ID = {
			59040,
			59440,
			59140
		},
		position_offset = {
			0,
			5,
			0
		},
		cld_box = {
			1


一词，中文译作输出，但并不是每个人都明白output的含义和工作方式.';

  @override
  String get knowledge250Sboutputs250Sbtitle => '加密货币里面的output，中文译作输出，这个概念到底什么意思,又为什么门罗币转账后余额显示错误要等待二十分钟';

  @override
  String get knowledge250Sbp2pool250Sb0250Sbtext => '
Monero项目的核心目标之一是通过对工作证明的新的和创新的方法来实现一个公平、分散和安全的网络，这是当今加密货币网络的主要安全方式。
\n\n
虽然 像RandomX 这样独特的挖矿算法对这一目标极为重要，因为它有助于确保任何拥有计算机的人都能为网络的安全做出合理的贡献，但RandomX并不能解决由于矿池可能出现的问题。 矿池是目前最常见的加密货币挖矿方式，包括Monero，但值得庆幸的是，p2pool挖矿的出现正在迅速改变这种状况。
';

  @override
  String get knowledge250Sbp2pool250Sb1250Sbtext => '
矿池是矿工分担试图解决网络上的区块的任务，然后平均分享池子里找到的所有区块的奖励的一种方式。 虽然这极大地有助于平衡矿工获得报酬的频率与单独开采Monero的频率，但也不是没有严重的中心化问题。
\n\n
当每个矿工向矿池贡献工作时，他们放弃了对他们所做的任何工作和发现的区块的控制权，相信矿池会根据每个人所做的工作的数量，在所有矿工之间诚实和公平地分享奖励。 如果一切顺利，矿池运营商会收集所有矿工的工作，提交给网络，并平均分享奖励。
';

  @override
  String get knowledge250Sbp2pool250Sb1250Sbtitle => '什么是矿池采矿？';

  @override
  String get knowledge250Sbp2pool250Sb2250Sbtext => '
不幸的是，这完全依赖于信任，并允许矿池运营商对矿工所做的工作做一些不正当的事情。矿池运营商可以利用正在进行的工作来攻击网络，试图重复花费资金（如果矿池足够大的话），或者干脆利用矿工正在进行的工作来支付自己，而从不适当奖励矿工的工作。</p


using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using Reloaded.Hooks.Definitions;
using Reloaded.Hooks.Definitions.Structs;
using Reloaded.Hooks.Tests.Shared;
using Xunit;

// Watch out!

namespace Reloaded.Hooks.Tests.X64
{
    public class CalculatorHookTest : IDisposable
    {
        private NativeCalculator _nativeCalculator;
        private NativeCalculator.AddFunction _addFunction;
        private NativeCalculator.SubtractFunction _subtractFunction;
        private NativeCalculator.DivideFunction _divideFunction;
        private NativeCalculator.MultiplyFunction _multiplyFunction;
        private NativeCalculator.AddFunction _addWithBranchFunction;

        private static IHook<NativeCalculator.AddFunction> _addHook;
        private static IHook<NativeCalculator.SubtractFunction> _subHook;
        private static IHook<NativeCalculator.DivideFunction> _divideHook;
        private static IHook<NativeCalculator.MultiplyFunction> _multiplyHook;
        private static IHook<NativeCalculator.AddFunction> _addWithBranchHook;

        public unsafe CalculatorHookTest()
        {
            _nativeCalculator = new NativeCalculator();
            _addFunction = ReloadedHooks.Instance.CreateWrapper<NativeCalculator.AddFunction>((long) _nativeCalculator.Add, out var addWrapper);
            _subtractFunction = ReloadedHooks.Instance.CreateWrapper<NativeCalculator.SubtractFunction>((long)_nativeCalculator.Subtract, out _);
            _divideFunction = ReloadedHooks.Instance.CreateWrapper<NativeCalculator.DivideFunction>((long)_nativeCalculator.Divide, out var divWrapper);
            _multiplyFunction = ReloadedHooks.Instance.CreateWrapper<NativeCalculator.MultiplyFunction>((long)_nativeCalculator.Multiply, out var mulWrapper);
            _addWithBranchFunction = ReloadedHooks.Instance.CreateWrapper<NativeCalculator.AddFunction>((long)_nativeCalculator.AddWithBranch, out _);
        }

        public void Dispose()
        {
            _nativeCalculator?.Dispose();
        }

        [Fact]
        public void TestHookAdd()
        {
            int Hookfunction(int a, int b) { return _addHook.OriginalFunction(a, b) + 1; }
            _addHook = ReloadedHooks.Instance.CreateHook<NativeCalculator.AddFunction>(Hookfunction, (long) _nativeCalculator.Add).Activate();

            for (int x = 0; x < 100; x++)
            {
                for (int y = 1; y < 100;)
                {
                    int expected = (x + y) + 1;


0di\u0173 grup\u0117",
"Right": "De\u0161in\u0117",
"Insert column after": "\u012eterpti stulpel\u012f po",
"Cols": "Stulpeliai",
"Insert row after": "\u012eterpti eilut\u0119 po",
"Width": "Plotis",
"Cell properties": "Langelio savyb\u0117s",
"Left": "Kair\u0117",
"Cut row": "I\u0161kirpti eilut\u0119",
"Delete column": "Naikinti stulpel\u012f",
"Center": "Centras",
"Merge cells": "Sujungti langelius",
"Insert template": "\u012eterpti \u0161ablon\u0105",
"Templates": "\u0160ablonai",
"Background color": "Fono spalva",
"Text color": "Teksto spalva",
"Show blocks": "Rodyti blokus",
"Show invisible characters": "Rodyti nematomus simbolius",
"Words: {0}": "\u017dod\u017eiai: {0}",
"Insert": "\u012eterpti",
"File": "Failas",
"Edit": "Redaguoti",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Suformatuoto teksto laukas. D\u0117l meniu spauskite ALT-F9. U\u017eduo\u010di\u0173 juostos \u012fjungimui spauskite ALT-F10. Pagalbai - spauskite ALT-0.",
"Tools": "\u012erankiai",
"View": "Per\u017ei\u016bra",
"Table": "Lentel\u0117",
"Format": "Formatas"
});tinymce.addI18n('pl',{
"Cut": "Wytnij",
"Header 2": "Nag\u0142\u00f3wek 2",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Twoja przegl\u0105darka nie obs\u0142uguje bezpo\u015bredniego dost\u0119pu do schowka. U\u017cyj zamiast tego kombinacji klawiszy Ctrl+X\/C\/V.",
"Div": "Div",
"Paste": "Wklej",
"Close": "Zamknij",
"Font Family": "Kr\u00f3j czcionki",
"Pre": "Sformatowany tekst",
"Align right": "Wyr\u00f3wnaj do prawej",
"New document": "Nowy dokument",
"Blockquote": "Blok cytatu",
"Numbered list": "Lista numerowana",
"Increase indent": "Zwi\u0119ksz wci\u0119cie",
"Formats": "Formaty",
"Headers": "Nag\u0142\u00f3wki",
"Select all": "Zaznacz wszystko",
"Header 3": "Nag\u0142\u00f3wek 3",
"Blocks": "Bloki",
"Undo": "Cofnij",
"Strikethrough": "Przekre\u015blenie",
"Bullet list": "Lista wypunktowana",
"Header 1": "Nag\u0142\u00f3wek 1",
"Superscript": "Indeks g\u00f3rny",
"Clear formatting": "Wyczy\u015b\u0107 formatowanie",
"Font Sizes": "Rozmiar czcionki",
"Subscript": "Indeks dolny",
"Header 6": "Nag\u0142\u00f3wek 6",
"Redo": "Pon\u00f3w",
"Paragraph": "Akapit",


"name": "Waylon Jennings"
        }
      }
    },
    {
      "@type": "ListItem",
      "position": 1,
      "item": {
        "@type": "MusicRecording",
        "name": "All Along the Watchtower",
        "byArtist": {
          "@type": "MusicGroup",
          "name": "Jimi Hendrix"
        }
      }
    }
  ]
}
</script>

        <link property="sameAs" href="http://rdf.freebase.com/rdf/m.0dbwsn" />

My Bed

            My Bed, first created in <time property="dateCreated" datetime="1998">1998</time>,
            is an installation by the British artist Tracey Emin.

                My Bed was exhibited at the Tate Gallery in
                <time datetime="1998">1999</time> as one
                of the shortlisted works for the Turner Prize. It consisted of her
                bed with bedroom objects in an abject state, and gained much media
                attention. Although it did not win the prize, its notoriety has
                persisted.

Artist:

                        Tracey Emin

            The artwork generated considerable media furore, particularly over the
            fact that the bedsheets were stained
            with bodily secretions and the floor had items from the artist's room
            (such as condoms,
            a pair of knickers with menstrual
            period stains, other detritus, and functional, everyday objects,
            including a pair of slippers). The
            bed was presented in the state that
            Emin claimed it had been when she said she had not got up from it for
            several days due to suicidal depression brought on by relationship
            difficulties.

    Wells Fargo Secured Visa® Credit Card
    Requires a minimum $300 security deposit.
    When you apply, you provide a minimum security deposit of at least
      $
      300, or up to $
      10,000.

      <meta itemprop="offeredBy" content="Wells Fargo"/>
      Annual fee
        $
        25

            <meta itemprop="value" content="1"/><meta itemprop="unitCode" content="A


), [b2] "+w" (b2), [k] "+r" (k)
            : [oddk] "r" (oddk)
            : "x20", "x21", "v8", "v9", "v10", "v11", "v12", "v13", "v14", "v15", "v16", "v17", "v18",
              "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31", "cc"
            );
        }
    }
}

} // namespace arm_gemm

#endif
/*
 * Copyright (c) 2019-2020 Arm Limited.
 *
 * SPDX-License-Identifier: MIT
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to
 * deal in the Software without restriction, including without limitation the
 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 * sell copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial 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.
 */
#ifdef __aarch64__

#include <algorithm>

#include <cstdint>
#include <cpu/kernels/assembly/bi_arm_gemm.hpp>

#include <data/core/neon/kernels/arm_gemm/asmlib.hpp>
#include <data/core/neon/kernels/arm_gemm/utils.hpp>

namespace BatmanGemm {

void a64_smallK_hybrid_s8s32_dot_6x4(const int8_t *A, int lda, const int8_t *B, int32_t *C, int ldc, int M, int N, int K, const int32_t *, Activation, bool) {
    const long loops_count = iceildiv(N, (int)4) - 1;
    const long ldab = lda * sizeof(int8_t);
    const long ldcb = ldc * sizeof(int32_t);
    const long odds_count = K % 4;
    K = (K + 3) / 4;

    for (int y0=0; y0<M; y0+=6) {
        long loops = loops_count;
        long oob_rows = std::max(6 - (M-y0), 0);
        long odds = odds_count;
        const int8_t *b_ptr0 = B;
        const int8_t *a_ptr0 = A + (y0 * lda);

        int32_t *c_ptr0 = C + (y0 * ldc);

        switch(K) {
            case 9:
                __asm __volatile (
                    "a_ptr1 .req X0\n"
                    "


these changes is that the driver, not the application, is now responsible for accessing GTL files, proprietary instrument library files, or both. Virtually all MSS 2.X applications contained a "timbre request" loop similar to the following:

while ((treq = AIL_timbre_request(driver,sequence)) != 0xffff)
{
   bank = treq / 256; patch = treq % 256;
   data = load_global_timbre(GTL,bank,patch);
   if (timb != NULL)
   {
      AIL_install_timbre(driver,bank,patch,data);
      free(timb);
   }
}

 This loop would typically be executed after registering an XMIDI sequence with MSS, and before starting playback. The old AIL_timbre_request function would examine the XMIDI file image to check for timbres used by the sequence which did not correspond to instruments currently present in the timbre cache. If any timbres were "requested" in this manner, the application would open the GTL file and fetch the timbre's data block, supplying it to the driver with a call to AIL_install_timbre. This process would continue until all timbres required to play the XMIDI sequence had been uploaded to the synthesizer or cached in system RAM, depending on the synthesizer platform.

Current MSS drivers which support MSS 2.X-compatible Global Timbre Library files must implement the basic algorithm above in Function 503H (Install Timbre Set). Most OEM-developed drivers, however, will not need to deal with GTL compatibility. Instead, the Function 503H (Install Timbre Set) handlers in these drivers will either return immediately with AX = -1 if the synthesizer does not support uploadable instruments or if the complete instrument set is present in ROM, or, in cases where uploadable instruments are supported and/or required, handle the necessary uploading and memory management tasks in a manner transparent to MSS.

The list of timbres required to play a given XMIDI sequence appears in the sequence's XMIDI file image in the form of an IFF (Interchange File Format) chunk of type TIMB:

[
   TIMB<len>
   U16 # of timbre list entries, 0-16384
   {
      U8 patch number 0-127
      U8 timbre bank 0-127
   }
   ...
]

 Prior to calling this function, the entire TIMB chunk is copied to the DST's 512-byte MIDI_data[] array. This is the same area of memory used to communicate with Function 502H (Transmit MIDI Data). TIMB chunks longer than 512 bytes will be split into smaller sub-chunks and passed in subsequent calls to the function. The patch number for each timbre entry corresponds to the normal MIDI Program Change controller value used to associate a patch with a given MIDI channel. Through the addition of the XMIDI Patch Bank Select controller (114) to the MSS MIDI implementations, the basic MIDI Program Change architecture has been extended to accommodate up to 16,384 unique instruments by combining a timbre bank (also called a patch bank) value with each patch number. Patch number/timbre bank pairs are often expressed as two-byte integers or bank/patch specifiers, in which the low byte corresponds to the patch number and the high byte corresponds to its timbre bank.

By default, the timbre bank value


s", modelID)
}

// getLatestClaudeSonnet gets the latest Claude Sonnet model
func (h *BedrockHandler) getLatestClaudeSonnet() (*mcp.CallToolResult, error) {
	// Get all models
	result, err := h.listModels()
	if err != nil {
		return nil, err
	}

	// Convert result to JSON string
	resultJSON, err := json.Marshal(result)
	if err != nil {
		return nil, fmt.Errorf("failed to marshal result: %w", err)
	}

	// Parse result
	var data map[string]any
	if err := json.Unmarshal(resultJSON, &data); err != nil {
		return nil, fmt.Errorf("failed to parse model data: %w", err)
	}

	// Get models
	modelsRaw, ok := data["models"].([]any)
	if !ok {
		return nil, fmt.Errorf("invalid model data format")
	}

	// Find Claude Sonnet model
	for _, modelRaw := range modelsRaw {
		modelMap, ok := modelRaw.(map[string]any)
		if !ok {
			continue
		}

		// Convert to BedrockModel
		var model BedrockModel
		modelJSON, err := json.Marshal(modelMap)
		if err != nil {
			continue
		}
		if err := json.Unmarshal(modelJSON, &model); err != nil {
			continue
		}

		// Check if it's Claude Sonnet
		if model.Provider == "anthropic" && strings.Contains(model.ModelName, "Sonnet") {
			return NewToolResultJSON(model)
		}
	}

	return nil, fmt.Errorf("claude Sonnet model not found") // Lowercased "claude"
}
package memory

import (
	"fmt"
	"os"
	"slices"
	"strconv"
	"strings"

	"github.com/sahilm/fuzzy"
	"github.com/sirupsen/logrus"
)

// GraphManager handles knowledge graph operations
type GraphManager struct {
	storage      *Storage
	logger       *logrus.Logger
	fuzzyEnabled bool
}

// NewGraphManager creates a new graph manager instance with default namespace
func NewGraphManager(logger *logrus.Logger) (*GraphManager, error) {
	return NewGraphManagerWithNamespace(logger, "default")
}

// NewGraphManagerWithNamespace creates a new graph manager instance with specified namespace
func NewGraphManagerWithNamespace(logger *logrus.Logger, namespace string) (*GraphManager, error) {
	storage, err := NewStorageWithNamespace(logger, namespace)
	if err != nil {
		return nil, fmt.Errorf("failed to create storage: %w", err)
	}

	// Check if fuzzy search is enabled (default: true)
	fuzzyEnabled := true
	if envVal := os.Getenv("MEMORY_ENABLE_FUZZY_SEARCH"); envVal != "" {
		if parsed, err := strconv.ParseBool(envVal); err == nil {
			fuzzyEnabled = parsed
		}
	}

	return &GraphManager{
		storage:      storage,
		logger:       logger,
		fuzzyEnabled: fuzzyEnabled,
	}, nil
}

// SetNamespace changes the namespace for this graph manager
func (gm *GraphManager) SetNamespace(namespace string) error {
	return gm.storage.SetNamespace(namespace)
}

// CreateEntities creates new entities, ignoring duplicates
func (gm *GraphManager) CreateEntities(entities []Entity) ([]Entity, error) {
	graph, err := gm.storage.LoadGraph()
	if err != nil {
		return nil, fmt.Errorf("failed to load graph: %w", err)
	}

	// Create a map of existing entity names for quick lookup
	existingNames := make(map[string]bool)
	for _, entity := range graph.Entities {
		existingNames[entity.Name] = true
	}

	// Filter out entities that already exist
	var newEntities []Entity
	for _, entity := range entities


# app/schemas/api_key_schemas.py
from pydantic import BaseModel, Field
from uuid import UUID
from datetime import datetime

class ApiKeyRead(BaseModel):
    """Schema for displaying an API key (prefix only)."""
    id: UUID
    key_prefix: str
    created_at: datetime
    last_used_at: datetime | None

    class Config:
        from_attributes = True

class ApiKeyCreateResponse(BaseModel):
    """
    Schema for the response when a new API key is created.
    The full key is shown only once.
    """
    message: str = "API key created successfully. Please save this key securely. You will not be able to see it again."
    api_key_details: ApiKeyRead
    full_api_key: str = Field(..., description="The full, unhashed API key. This is shown only once.")


        gfxx.x = zx - dragoff.relx[i]
                gfxx.y = zy - dragoff.rely[i]
              end
            end
          end
          glob_gfxselrect = CalcGFX4SelRect()
          lupd.update_surface = true
        end
      else

        if math.floor(mouse.mx/grids) ~= math.floor(mouse.last_x/grids) or math.floor(mouse.my/grids) ~= math.floor(mouse.last_y/grids) then
          local i
          local ddx = (dragoff.mx - mouse.mx)/lvar.zoom
          local ddy = (dragoff.my - mouse.my)/lvar.zoom
          local dx = (math.floor((dragoff.left-ddx)/grids)*grids)-dragoff.left
          local dy = (math.floor((dragoff.top-ddy)/grids)*grids)-dragoff.top
          for g = 1, #gfx4_select do
            local gfxx = strips[tracks[track_select].strip][page].graphics[gfx4_select[g]]
            if gfxx.poslock == false and poslock_select == false then

              --gfxx.x = math.floor((dragoff.x[g]-dx)/grids)*grids
              --gfxx.y = math.floor((dragoff.y[g]-dy)/grids)*grids
              if (lvar.lockx or false) == false then
                gfxx.x = dragoff.x[g]+dx
              end
              if (lvar.locky or false) == false then
                gfxx.y = dragoff.y[g]+dy
              end

            end
          end
          glob_gfxselrect = CalcGFX4SelRect()
          lupd.update_surface = true
        end
      end

    elseif not mouse.context and draggfx2 ~= nil and keycontext == nil and wheelcontext == nil then

      if MOUSE_over(obj.sections[60]) and draggfx2 == 'draggfx' then
        --delete
        ctl_select = nil
        DeleteSelectedCtls()
        lupd.update_gfx = true
      else
        local strip = tracks[track_select].strip
        if strips and strips[strip] then
          if gfx4_select then
            if newgrp and (newgrp.grpid == nil or newgrp.grpid == -1) then
              newgrp.grpid = Switcher_AddPage(newgrp.switchid)
            end
            local ctls = strips[strip][page].controls
            for g = 1, #gfx4_select do
              local gfxx = strips[strip][page].graphics[gfx4_select[g]]
              if gfxx then
                gfxx.hide = nil
                if newgrp then
                  gfxx.switcher = ctls[newgrp.switchid].switcherid
                  gfxx.grpid = newgrp.grpid
                end
              end
            end

          end
        end
        newgrp = nil
        lupd.update_gfx = true
      end
      draggfx2 = nil

    elseif mouse.context and mouse.context == contexts.dragsep_gfx then

      local dy = mouse.my - dragsep_gfx.y
      gx_h = math.min(math.max(dragsep_gfx.oh + dy, tb_butt_h*2),gfx1.main_h-obj.sections[531].y-2-8)
      def_gx_h = gx_h

      obj = GetObjects()
      lupd.update_sidebar = true

    elseif mouse.context and mouse.context == contexts.draglasso then
      if math.abs(lasso.l - mouse.mx) > 10 or math.abs(lasso.t - mouse.my) > 10 then
        lasso.r = mouse.mx
        lasso


(0,0,0,0.3) 0px 0.1em 0.3em;padding:0.2em 1.02em}.x-picker-slot-title>div{font-weight:bold;font-size:0.8em;color:#113b59;text-shadow:rgba(255,255,255,0.25) 0 0.08em 0}.x-picker-slot .x-dataview-inner{width:100% !important}.x-picker-slot .x-dataview-item{vertical-align:middle;height:2.5em;line-height:2.5em;font-weight:bold;padding:0 10px}.x-picker-slot .x-picker-item{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.x-picker-right{text-align:right}.x-picker-center{text-align:center}.x-picker-left{text-align:left}.x-tabbar.x-docked-top{border-bottom-width:.1em;border-bottom-style:solid;height:2.6em;padding:0 .8em}.x-tabbar.x-docked-top .x-tab{position:relative;padding:0.4em 0.8em;height:1.8em;min-width:3.3em;-webkit-border-radius:0.9em;border-radius:0.9em}.x-tabbar.x-docked-top .x-tab .x-button-label,.x-tabbar.x-docked-top .x-tab .x-hasbadge .x-badge,.x-hasbadge .x-tabbar.x-docked-top .x-tab .x-badge{font-size:.8em;line-height:1.2em;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}.x-tabbar.x-docked-top .x-tab .x-badge{font-size:.6em !important;top:-0.5em}.x-tabbar.x-docked-top .x-tab.x-tab-icon{padding:0.3em 0.8em}.x-tabbar.x-docked-top .x-tab.x-tab-icon .x-button-icon{-webkit-mask-size:1.2em;width:1.2em;height:1.2em;display:inline-block;margin:0 auto;position:relative}.x-tabbar.x-docked-top .x-tab.x-tab-icon .x-button-label,.x-tabbar.x-docked-top .x-tab.x-tab-icon .x-hasbadge .x-badge,.x-hasbadge .x-tabbar.x-docked-top .x-tab.x-tab-icon .x-badge{margin:0;margin-left:.3em;padding:.1em 0 .2em 0;display:inline-block;position:relative;top:-0.4em}.x-tabbar.x-docked-bottom{border-top-width:.1em;border-top-style:solid;height:3em;padding:0}.x-tabbar.x-docked-bottom .x-tab{-webkit-border-radius:0.25em;border-radius:0.25em;min-width:3.3em;position:relative;padding-top:.2em;-webkit-box-orient:vertical


, 0, 1], zeros(6),
        [0, 1, 0, 1], zeros(6),
        [1, 1, 1, 1], zeros(6),
      )
      );
    });
    test('test 4', () => {
      const r = new Runner();
      r.move('T H T H T H T H T H T H T H T H T H T H T N'.split(' '));
      expect(true).toBeTruthy();
    });
    test('test 5', () => {
      const r = new Runner();
      r.move('I H I4 H L7 R H'.split(' '));
      expect(r.state.score).toBe(40);
    });
  });
});

describe('gameStates', () => {
  describe('Game over tests', () => {
    test('Part 1', () => {
      const r = new Runner();
      r.move('T0 H I4 H'.split(' '));
      expect(r.state.dead).toBe(false);
    });
    test('Part 2', () => {
      const r = new Runner();
      r.move('I9 O8 N'.split(' '));
      expect(r.state.dead).toBe(true);
    });
    describe('Bullshit deaths', () => {
      test('Will not die', () => {
        const r = new Runner();
        r.move(
          'Z0 J2 O5 N Z1 N N N N N N N N N N H S2 N N N N N N H L3 N N N N N N N N H J1 N N N N N H I2 N N N N H J5 N'.split(
            ' '
          )
        );
        expect(r.state.rendered.find((v) => v > 1)).toBe(undefined);
        expect(r.state.dead).toBe(false);
      });
      test('Will not die obviously', () => {
        const r = new Runner();
        r.move('O5 Z1 H S2 H L3 H J1 I2 H J5 N'.split(' '));
        expect(r.state.dead).toBe(false);
      });
    });
  });
});

describe('line clearing tests', () => {
  const t = (sequence: string, result: number[]) => {
    const r = new Runner();
    r.move(sequence.split(' '));
    expect(r.state.dead).toBe(false);
    console.log(JSON.stringify(r.state.rendered));
    console.log(JSON.stringify(result));
    expect(r.state.rendered).toEqual(result);
  };
  t('I H I4 H Z7 H', sequence(zeros(19 * 10), zeros(7), [1, 1, 0]));
  t(
    'I H I4 H T H T3 H Z5 H Z1 H L7 C H L R R H I9 R H',
    sequence(
      zeros(17 * 10),
      [...ones(3), ...zeros(7)],
      [...ones(3), ...zeros(6), 1],
      [0, ...ones(9)]
    )
  );
});
export const phoneValidator = (phone: string) => {
  const phoneRegExp = /^(\+1|\+)?([\d]{10,11}$)/;

  let formattedPhone = '';
  let errorMessage = '';
  let errorLevel = null;
  let isValid = false;

  if (phone === null || phone === '') {
    return {
      errorLevel: 'global',
      value: phone,
      errorMessage,
      isValid,
    };
  }

  isValid = phoneRegExp.test(phone);

  if (isValid) {
    switch (phone.length) {
      case 10:
        formattedPhone = `+1${phone}`;
        break;
      case 11:
        formattedPhone = `+${phone}`;
        break;
      default:
        formattedPhone = phone;
        break;
    }
  } else {
    formattedPhone = phone;
    errorMessage = 'Phone format is not valid';
    errorLevel = 'local';
  }

  return {
    value: formattedPhone,
    errorMessage,
    isValid,
    errorLevel,
  };
};
import {Deferred, DeferredState} from "../src";

describe('Deferred', () => {

    it('should have state "pending" initially', function () {
        let d = new Deferred();
        expect(d.state).toBe(DeferredState.PENDING);
    });

    it('should provide "promise"', function () {
        let d


 Builder.SetInsertPoint(ContBB);
  if (RValTy->isVoidType())
    return RValue::get(nullptr);

  assert(Atomics.getValueSizeInBits() <= Atomics.getAtomicSizeInBits());
  return convertTempToRValue(
      Builder.CreateBitCast(Dest, ConvertTypeForMem(RValTy)->getPointerTo(
                                      Dest.getAddressSpace())),
      RValTy, E->getExprLoc());
}

Address AtomicInfo::emitCastToAtomicIntPointer(Address addr) const {
  unsigned addrspace =
    cast<llvm::PointerType>(addr.getPointer()->getType())->getAddressSpace();
  llvm::IntegerType *ty =
    llvm::IntegerType::get(CGF.getLLVMContext(), AtomicSizeInBits);
  return CGF.Builder.CreateBitCast(addr, ty->getPointerTo(addrspace));
}

Address AtomicInfo::convertToAtomicIntPointer(Address Addr) const {
  llvm::Type *Ty = Addr.getElementType();
  uint64_t SourceSizeInBits = CGF.CGM.getDataLayout().getTypeSizeInBits(Ty);
  if (SourceSizeInBits != AtomicSizeInBits) {
    Address Tmp = CreateTempAlloca();
    CGF.Builder.CreateMemCpy(Tmp, Addr,
                             std::min(AtomicSizeInBits, SourceSizeInBits) / 8);
    Addr = Tmp;
  }

  return emitCastToAtomicIntPointer(Addr);
}

RValue AtomicInfo::convertAtomicTempToRValue(Address addr,
                                             AggValueSlot resultSlot,
                                             SourceLocation loc,
                                             bool asValue) const {
  if (LVal.isSimple()) {
    if (EvaluationKind == TEK_Aggregate)
      return resultSlot.asRValue();

    // Drill into the padding structure if we have one.
    if (hasPadding())
      addr = CGF.Builder.CreateStructGEP(addr, 0);

    // Otherwise, just convert the temporary to an r-value using the
    // normal conversion routine.
    return CGF.convertTempToRValue(addr, getValueType(), loc);
  }
  if (!asValue)
    // Get RValue from temp memory as atomic for non-simple lvalues
    return RValue::get(CGF.Builder.CreateLoad(addr));
  if (LVal.isBitField())
    return CGF.EmitLoadOfBitfieldLValue(
        LValue::MakeBitfield(addr, LVal.getBitFieldInfo(), LVal.getType(),
                             LVal.getBaseInfo(), TBAAAccessInfo()), loc);
  if (LVal.isVectorElt())
    return CGF.EmitLoadOfLValue(
        LValue::MakeVectorElt(addr, LVal.getVectorIdx(), LVal.getType(),
                              LVal.getBaseInfo(), TBAAAccessInfo()), loc);
  assert(LVal.isExtVectorElt());
  return CGF.EmitLoadOfExtVectorElementLValue(LValue::MakeExtVectorElt(
      addr, LVal.getExtVectorElts(), LVal.getType(),
      LVal.getBaseInfo(), TBAAAccessInfo()));
}

RValue AtomicInfo::ConvertIntToValueOrAtomic(llvm::Value *IntVal,
                                             AggValueSlot ResultSlot,
                                             SourceLocation Loc,
                                             bool AsValue) const {
  // Try not to in some easy cases.
  assert(IntVal->getType()->isIntegerTy() && "Expected integer value");
  if (getEvaluationKind() == TEK_Scalar &&
      (((!LVal.isBitField() ||
         LVal.getBitFieldInfo().Size == ValueSizeInBits) &&
        !hasPadding()) ||
       !AsValue)) {
    auto *ValTy = AsValue
                      ? CGF.ConvertTypeForMem(ValueTy)
                      : getAtomicAddress


ounce-toolbar-tab.toolbar-tab {
  float: right; /* LTR */
}

[dir="rtl"] .toolbar .toolbar-bar .announce-toolbar-tab.toolbar-tab {
  float: left;
}
/**
 * @file
 * The .admin.css file is intended to only contain positioning and size
 * declarations. For example: display, position, float, clear, and overflow.
 */

.views-admin ul,
.views-admin menu,
.views-admin dir {
  padding: 0;
}
.views-admin pre {
  margin-top: 0;
  margin-bottom: 0;
  white-space: pre-wrap;
}
.views-left-25 {
  float: left; /* LTR */
  width: 25%;
}
[dir="rtl"] .views-left-25 {
  float: right;
}
.views-left-30 {
  float: left; /* LTR */
  width: 30%;
}
[dir="rtl"] .views-left-30 {
  float: right;
}
.views-left-40 {
  float: left; /* LTR */
  width: 40%;
}
[dir="rtl"] .views-left-40 {
  float: right;
}
.views-left-50 {
  float: left; /* LTR */
  width: 50%;
}
[dir="rtl"] .views-left-50 {
  float: right;
}
.views-left-75 {
  float: left; /* LTR */
  width: 75%;
}
[dir="rtl"] .views-left-75 {
  float: right;
}
.views-right-50 {
  float: right; /* LTR */
  width: 50%;
}
[dir="rtl"] .views-right-50 {
  float: left;
}
.views-right-60 {
  float: right; /* LTR */
  width: 60%;
}
[dir="rtl"] .views-right-60 {
  float: left;
}
.views-right-70 {
  float: right; /* LTR */
  width: 70%;
}
[dir="rtl"] .views-right-70 {
  float: left;
}
.views-group-box .form-item {
  margin-right: 3px;
  margin-left: 3px;
}

/*
 * The attachment details section, its tabs for each section and the buttons
 * to add a new section
 */
.views-displays {
  clear: both;
}

/* The tabs that switch between sections */
.views-displays .tabs {
  overflow: visible;
  margin: 0;
  padding: 0;
  border-bottom: 0 none;
}
.views-displays .tabs > li {
  float: left; /* LTR */
  padding: 0;
  border-right: 0 none; /* LTR */
}
[dir="rtl"] .views-displays .tabs > li {
  float: right;
  border-right: 1px solid #bfbfbf;
  border-left: 0 none;
}
.views-displays .tabs .open > a {
  position: relative;
  z-index: 51;
}
.views-displays .tabs .views-display-deleted-link {
  text-decoration: line-through;
}
.views-display-deleted > details > summary,
.views-display-deleted .details-wrapper > .views-ui-display-tab-bucket > *,
.views-display-deleted .views-display-columns {


80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96zM48 464v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 43 0 70.4-12.1 80.7-14.6 1.3-17.1 4.9-33.6 10.4-49.2-31.4-.4-43.1 15.8-91.1 15.8-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h321.4c-15.6-13.7-29-29.9-39.5-48H48zm448-240c-79.6 0-144 64.4-144 144s64.4 144 144 144 144-64.4 144-144-64.4-144-144-144zm64 150.3c0 5.3-4.4 9.7-9.7 9.7h-60.6c-5.3 0-9.7-4.4-9.7-9.7v-76.6c0-5.3 4.4-9.7 9.7-9.7h12.6c5.3 0 9.7 4.4 9.7 9.7V352h38.3c5.3 0 9.7 4.4 9.7 9.7v12.6z'], 'user-cog': [640, 512, [], 'f4fe', 'M340.3 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 42.6 0 70-11.9 80.1-14.4-.1-7.5-.1-24.8 6.1-49.2-28.6 1.4-40.9 15.6-86.2 15.6-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h342c-19.4-12.9-36.2-29.2-49.7-48zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96zm386.5 325.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4


, 1, 16
	ldrh	w10, [x11, x10]
	cmp	w10, w13
	bcs	.L465
	ldrh	w10, [x2]
	cmp	w10, w7
	bne	.L466
	strh	w1, [x4, 2]
	strh	w0, [x2]
	b	.L463
.L466:
	umaddl	x2, w10, w6, x3
	mov	w1, w10
	b	.L467
.L465:
	ldrh	w6, [x2, 2]
	cmp	x2, x5
	strh	w6, [x4, 2]
	strh	w1, [x3, x8]
	bne	.L468
	strh	w0, [x2, 2]
	str	x4, [x12, #:lo12:.LANCHOR89]
	b	.L463
.L468:
	ldrh	w1, [x2, 2]
	mov	w4, 6
	umull	x1, w1, w4
	strh	w0, [x3, x1]
	strh	w0, [x2, 2]
	b	.L463
	.size	insert_free_list, .-insert_free_list
	.section	.text.INSERT_FREE_LIST,"ax",@progbits
	.align	2
	.global	INSERT_FREE_LIST
	.type	INSERT_FREE_LIST, %function
INSERT_FREE_LIST:
	stp	x29, x30, [sp, -16]!
	add	x29, sp, 0
	bl	insert_free_list
	adrp	x1, .LANCHOR90
	ldrh	w0, [x1, #:lo12:.LANCHOR90]
	add	w0, w0, 1
	and	w0, w0, 65535
	strh	w0, [x1, #:lo12:.LANCHOR90]
	adrp	x1, .LANCHOR40
	ldrh	w1, [x1, #:lo12:.LANCHOR40]
	cmp	w1, w0
	bcs	.L469
	mov	w2, 238
	adrp	x1, .LANCHOR91
	adrp	x0, .LC5
	add	x1, x1, :lo12:.LANCHOR91
	add	x0, x0, :lo12:.LC5
	bl	printf
	ldp	x29, x30, [sp], 16
	adrp	x1, .LC6
	adrp	x0, .LC7
	add	x1, x1, :lo12:.LC6
	add	x0, x0, :lo12:.LC7
	b	printf
.L469:
	ldp	x29, x30, [sp], 16
	ret
	.size	INSERT_FREE_LIST, .-INSERT_FREE_LIST
	.section	.text.List_remove_node,"ax",@progbits
	.align	2
	.global	List_remove_node
	.type	List_remove_node, %function
List_remove_node:
	stp	x29, x30, [sp, -64]!
	and	w1, w1, 65535
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x20, .LANCHOR83
	stp	x21, x22, [sp, 32]
	mov	x22, x0
	mov	w0, 6
	str	x23, [sp, 48]
	ldr	x23, [x20, #:lo12:.LANCHOR83]
	umull	x21, w1, w0
	mov	w0, 65535
	add	x19, x23, x21
	ldrh	w1, [x19, 2]
	cmp


nd use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.  Redistributions
in binary form must reproduce the above copyright notice, this list of
conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.  Neither the name of
the Intel Corporation nor the names of its contributors may be used to
endorse or promote products derived from this software without
specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR
ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
END_LEGAL */
#include <fstream>
#include <iostream>
#include <cstdlib>
#include "pin.H"

KNOB<std::string> KnobWhere(KNOB_MODE_WRITEONCE, "pintool",
    "where", "", "Name of function where breakpoint is triggered.  If not specified, stop at first instruction.");
KNOB<BOOL> KnobWaitForDebugger(KNOB_MODE_WRITEONCE, "pintool",
    "wait_for_debugger", "0", "Wait for debugger to connect");
KNOB<std::string> KnobPort(KNOB_MODE_WRITEONCE, "pintool",
    "port", "", "Output file where TCP information is written");
KNOB<BOOL> KnobUseIargConstContext(KNOB_MODE_WRITEONCE, "pintool",
                                   "const_context", "0", "use IARG_CONST_CONTEXT");

BOOL FoundWhere = FALSE;
BOOL IsFirstBreakpoint = TRUE;

static void InstrumentRtn(RTN, VOID *);
static void InstrumentIns(INS, VOID *);
static void DoBreakpoint(CONTEXT *, THREADID);
static void OnExit(INT32, VOID *);

int main(int argc, char * argv[])
{
    PIN_Init(argc, argv);
    PIN_InitSymbols();

    if (!KnobPort.Value().empty())
    {
        DEBUG_CONNECTION_INFO info;
        if (!PIN_GetDebugConnectionInfo(&info))
        {
            std::cerr << "Error from PIN_GetDebugConnectionInfo()" << std::endl;
            return 1;
        }
        if (info._type != DEBUG_CONNECTION_TYPE_TCP_SERVER)
        {
            std::cerr << "Unexpected connection type from PIN_GetDebugConnectionInfo()" << std::endl;
            return 1;
        }

        std::ofstream out(KnobPort.Value().c_str());
        out << std::dec << info._tcpServer._tcpPort;
    }

    if (KnobWhere.Value() == "")
        INS_AddInstrumentFunction(InstrumentIns, 0);
    else
        RTN_AddInstrumentFunction(InstrumentRtn, 0);
    PIN_AddFiniFunction(OnExit, 0);

    PIN_StartProgram();
    return 0;
}

static void InstrumentRtn(RTN rtn, VOID *)
{
    if (RTN_Name(rtn) == KnobWhere.Value())
    {
        RTN_Open(rtn);
        INS ins = RTN_InsHeadOnly(rtn);
        INS_InsertCall(ins, IPOINT_BEFORE, AFUNPTR(DoBreakpoint),
                       (KnobUseIargConstContext)?IARG_CONST_CONTEXT:IARG_CONTEXT,
                       // IARG_CONST_CONTEXT has much lower overhead
                       // than IARG_CONTEX


work out whether to render native scrollbars or not,\n             * we tell it to with the intention of hiding them in CSS.\n             */ overflowX: context.scrollbarXEnabled ? \"scroll\" : \"hidden\",\n                    overflowY: context.scrollbarYEnabled ? \"scroll\" : \"hidden\",\n                    ...props.style\n                },\n                children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n                    ref: context.onContentChange,\n                    style: {\n                        minWidth: \"100%\",\n                        display: \"table\"\n                    },\n                    children\n                })\n            })\n        ]\n    });\n}, \"QJDvjtN21Lm1MiN/J0fr6IVZH/U=\", false, function() {\n    return [\n        useScrollAreaContext,\n        _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_3__.useComposedRefs\n    ];\n})), \"QJDvjtN21Lm1MiN/J0fr6IVZH/U=\", false, function() {\n    return [\n        useScrollAreaContext,\n        _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_3__.useComposedRefs\n    ];\n});\n_c3 = ScrollAreaViewport;\nScrollAreaViewport.displayName = VIEWPORT_NAME;\nvar SCROLLBAR_NAME = \"ScrollAreaScrollbar\";\nvar ScrollAreaScrollbar = /*#__PURE__*/ _s3(react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(_c4 = _s3((props, forwardedRef)=>{\n    _s3();\n    const { forceMount, ...scrollbarProps } = props;\n    const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n    const { onScrollbarXEnabledChange, onScrollbarYEnabledChange } = context;\n    const isHorizontal = props.orientation === \"horizontal\";\n    react__WEBPACK_IMPORTED_MODULE_0__.useEffect({\n        \"ScrollAreaScrollbar.useEffect\": ()=>{\n            isHorizontal ? onScrollbarXEnabledChange(true) : onScrollbarYEnabledChange(true);\n            return ({\n                \"ScrollAreaScrollbar.useEffect\": ()=>{\n                    isHorizontal ? onScrollbarXEnabledChange(false) : onScrollbarYEnabledChange(false);\n                }\n            })[\"ScrollAreaScrollbar.useEffect\"];\n        }\n    }[\"ScrollAreaScrollbar.useEffect\"], [\n        isHorizontal,\n        onScrollbarXEnabledChange,\n        onScrollbarYEnabledChange\n    ]);\n    return context.type === \"hover\" ? /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(ScrollAreaScrollbarHover, {\n        ...scrollbarProps,\n        ref: forwardedRef,\n        forceMount\n    }) : context.type === \"scroll\" ? /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(ScrollAreaScrollbarScroll, {\n        ...scrollbarProps,\n        ref: forwardedRef,\n        forceMount\n    }) : context.type === \"auto\" ? /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(ScrollAreaScrollbarAuto, {\n        ...scrollbarProps,\n        ref: forwardedRef,\n        forceMount\n    }) : context.type === \"always\" ? /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(ScrollAreaScrollbarVisible, {\n        ...scrollbarProps,\n        ref: forwardedRef\n    }) : null;\n}, \"ElaxBlXBgCRSqup4Y+nPaKERxHs=\", false, function() {\n    return [\n        useScrollAreaContext\n    ];\n})), \"ElaxBlXBgCRSqup4Y+nPaKERxHs=\", false, function() {\n    return [\n        useScrollAreaContext\n    ];\n});\n_c5 = ScrollAreaScrollbar;\nScrollAreaScrollbar.displayName = SCROLLBAR_NAME;\nvar Scrol


event="closeAllTabs">关闭全部标签页

<!DOCTYPE html>

  <meta charset="utf-8">
  <title>layuiAdmin std - 通用后台管理模板系统（iframe标准版）</title>
  <meta name="renderer" content="webkit">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
  <link rel="stylesheet" href="../layuiadmin/layui/css/layui.css" media="all">
  <link rel="stylesheet" href="../layuiadmin/style/admin.css" media="all">

              <i class="layui-icon l