//0058

#include<stdio.h>

inline bool NearZero(double x)
{
	x = (x>0?x:-x);
	return x < 0.0001;
}

struct Point
{
	double x, y;
};
int main(void)
{
	const int N = 4;
	Point p[N];
	int i;

	Point d1, d2;

	for(;;)
	{
		for(i = 0; i < N; i++)
		{
			if(scanf("%lf %lf", &p[i].x, &p[i].y) != 2)
				return 0;
		}

		d1.x = p[0].x - p[1].x;
		d1.y = p[0].y - p[1].y;
		d2.x = p[2].x - p[3].x;
		d2.y = p[2].y - p[3].y;

		bool isOrthogonal = false;

		if(!d1.x || !d2.x)
		{
			if(!d1.x && !d2.y ||
				!d1.y && !d2.x)
				isOrthogonal = true;
			else
				isOrthogonal = false;
		}
		else if(NearZero(
			(d1.y/d1.x * d2.y/d2.x + 1) ))
			isOrthogonal = true;

		puts(
			isOrthogonal ? "YES" : "NO"
			);
	}
	return 1;	//éÈ
}